JavaScript入門の導入スライド

23 件(作成済み 8・導入不要 0・未作成 15・合計 32枚 / 8本)

レッスンの導入の索引へ戻る

JavaScript入門のコースサムネイル
JavaScript入門1レッスン

HTML に JavaScript を読み込む

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門2レッスン

console.log で表示する

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門3レッスン

文字列を連結する

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門4レッスン

四則演算

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門5レッスン

コメントで意図を残す

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門6レッスン

エラーを読んでみる

導入スライド 4

JavaScript入門 - エラーを読んでみる

わざと間違えて、出た文字を見る

プログラムは間違えると止まりますが、そのとき何がまずかったのかを画面に書き残してくれます。まずは変数の名前をわざと書き間違えて、何が出るのかを見てみます。

英語がずらりと並ぶと読み飛ばしたくなりますが、見る場所は3か所だけです。

name と書くつもりが nama になっています。実行するとこう出ます。

const name = "田中太郎"; console.log(nama); // Uncaught ReferenceError: nama is not defined

1 / 4

読み取るのは3か所だけ

エラーの表示は、種類・メッセージ・場所の3つでできています。この3つを拾えれば、直す場所はほぼ決まります。

Uncaught ReferenceError: nama is not defined
ReferenceError種類
nama is not definedメッセージ
at profile.js:2:13
profile.js:2:13場所

読み取れたこと

読み取るものこの例では何か
種類ReferenceError(名前が見つからない)
メッセージnama という名前が定義されていない
場所profile.js の 2 行目 13 文字目

囲った行までたどり着けば、開くファイルと直す行が決まります。

メッセージの英語が分からなくても、種類と行番号だけで半分は解決します。

2 / 4

考えてみよう外しても進めます

const title = "フロントエンドエンジニア"; と書いたあと、次の行で title.toUpperCase() を title.toUppercase() と打ち間違えました。出るのはどの種類ですか。

選ぶと、この枚の中で答えと理由を確かめられます。

3 / 4

よく会う4種類

エラーの種類は数えきれないほどありますが、書き始めのうちに出会うのはほとんどこの4つです。名前から原因の見当が付くようになると、調べる時間がぐっと減ります。

エラーの種類だいたいの原因

ReferenceError

存在しない名前を呼んだ

TypeError

名前はあるが、その値にできない操作をした

SyntaxError

書き方が壊れていて、実行される前に止まった

RangeError

値が許される範囲から外れた

SyntaxError だけは実行される前に出ます。だから console.log の結果が1つも出ないまま止まったら、まずカッコや引用符の閉じ忘れを疑います。

4 / 4

JavaScript入門のコースサムネイル
JavaScript入門7レッスン

つくる 起動メッセージ

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門8レッスン

第1章まとめクイズ

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門9レッスン

let と const を使い分ける

導入スライド 4

JavaScript入門 - let と const を使い分ける

値を入れる箱には2種類ある

変数は値をしまっておく箱です。JavaScript にはその箱を作る書き方が2つあり、あとから中身を入れ直せるかどうかで分かれています。作品数のように増えていく値は、入れ直せる let で作ります。

では、入れ直せないほうの箱で同じことをするとどうなるのかを次で見ます。

2行目の works = 4 が入れ直しです。let で作った箱なので通ります。

let works = 3; works = 4; console.log(works); // 4

1 / 4

const に入れ直すと、その行で止まる

const で作った箱は、一度入れたら別の値に取り替えられません。取り替えようとした行でエラーになり、そこから下は実行されません。

const name = "田中太郎";
const name入れ直せない箱
let works = 3;
let works入れ直せる箱
works = works + 1;
name = "田中花子";
name = "田中花子"ここで止まる

実行の様子

何が起きるか
1name に 田中太郎 が入る
2works に 3 が入る
3works が 4 になる
4TypeError(定数には入れ直せない)

囲った4行目で止まります。以降に何行書いてあっても実行されません。

止まってくれるのは困ることではなく、変えるつもりの無かった値を守ってもらえたということです。

2 / 4

考えてみよう外しても進めます

const tags = ["React", "TypeScript"]; と書いたあと、tags.push("CSS") を実行するとどうなりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

3 / 4

JavaScript入門 - let と const を使い分ける

どちらで書くかの決め方

迷ったらまず const で書き、入れ直しが必要になった行でエラーが出たら、そこだけ let に直します。この順番だと、変わる値がどれなのかがコードを読むだけで分かるようになります。

配列を const にしても中身は足せるので、プロフィールの作品一覧のような箱は const のままで困りません。

こういう値どちらで書くか
名前や肩書きなど、後で変えない値const
作品数のように数えて増やす値let
くり返しの回数を数える変数let
配列やオブジェクトを入れる箱const でよい
古い教材で見かける var今は使わない

4 / 4

JavaScript入門のコースサムネイル
JavaScript入門10レッスン

typeof で型を調べる

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門11レッスン

型を変換する

導入スライド 4

JavaScript入門 - 型を変換する

見た目が数字でも、数値とは限らない

入力欄から受け取った値は、数字を打ったつもりでも文字列として届きます。文字列のまま足し算をすると、計算ではなく文字のつなぎ合わせになります。型とは、その値が数値なのか文字列なのかという種類のことです。

Number() を通すと数値に変わります。この変換を自分で書くのが明示変換です。

同じ 12 でも、文字列のままだと 13 になりません。

const worksText = "12"; console.log(worksText + 1); // "121" console.log(Number(worksText) + 1); // 13

1 / 4

自分で変える変換と、勝手に起きる変換

Number や String のように自分で書くのが明示変換です。それとは別に、+ や == を使ったときに JavaScript が黙って型をそろえる暗黙変換もあります。困るのはいつも後者のほうです。

console.log("5" + 1);
"5" + 1+ だけ文字列に寄る
console.log("5" - 1);
console.log(Number("5") + 1);
Number("5")自分で数値にする
console.log(String(5) + 1);
String(5)自分で文字列にする
console.log(Boolean(""));

結果

結果
"5" + 1"51"
"5" - 14
Number("5") + 16
String(5) + 1"51"
Boolean("")false

囲った2行が非対称の正体です。同じ 5 と 1 なのに答えの型が違います。

+ は文字のつなぎ合わせにも使う記号なので、片方が文字列だと文字列に寄ります。- は文字では使わないので、両方を数値に直してから計算されます。

2 / 4

考えてみよう外しても進めます

入力欄から受け取った作品数が works = "3" のとき、works + 1 は何になりますか。

選ぶと、この枚の中で答えと理由を確かめられます。

3 / 4

JavaScript入門 - 型を変換する

変換の早見

使う変換はこれだけです。受け取った値を最初に整えてしまえば、あとの計算で型を気にする場面はほとんど無くなります。

== は比べる前に勝手に型をそろえます。型もそろっているか見る === を既定にしておくと、暗黙変換に振り回されなくなります。

やりたいこと書き方
文字列を数値にするNumber("3") で 3
数値を文字列にするString(3) で 3 の文字列
真偽値にするBoolean("") で false
数値に直せたか確かめるNumber.isNaN(Number(v))
いまの型を見るtypeof v

4 / 4

JavaScript入門のコースサムネイル
JavaScript入門12レッスン

真偽値と falsy な値

導入スライド 4

JavaScript入門 - 真偽値と falsy な値

if には true 以外も書ける

if のカッコの中には、true や false だけでなくどんな値でも書けます。書かれた値は、その場で true 寄りか false 寄りかに判定されます。false 寄りと判定される値を falsy、true 寄りと判定される値を truthy と呼びます。

空文字列は falsy なので else の側に進みます。ではどの値が falsy なのかを次で並べます。

if に渡しているのは true でも false でもなく、ただの文字列です。

const nickname = ""; if (nickname) { console.log("ニックネームがあります"); } else { console.log("空なのでフルネームを出します"); // こちらが出る }

1 / 4

空に見えても truthy な値がある

Boolean() に通すと、その値が truthy と falsy のどちらなのかをそのまま確かめられます。直感と食い違うものが2つ混ざっています。

const values = ["", "0", 0, [], {}, null];
"0"中身のある文字列
[]空でも truthy
for (const v of values) {
console.log(Boolean(v));
}

Boolean() を通した結果

if での扱い
""falsy
"0"truthy
0falsy
[]truthy
{}truthy
nullfalsy

囲った2行が引っかかりどころです。文字の 0 と数値の 0 で答えが逆になります。

空の配列と空のオブジェクトは truthy です。中身が空かどうかは見ていないので、件数を知りたいときは length を自分で見ます。

2 / 4

考えてみよう外しても進めます

作品数 works が 0 のとき、if (works) { 作品数を表示する } の中は動きますか。

選ぶと、この枚の中で答えと理由を確かめられます。

3 / 4

JavaScript入門 - 真偽値と falsy な値

falsy はこの6つを覚えれば足りる

実際に書いていて出会う falsy は、この6つでほぼ全部です。ここに無い値は、空の配列でも空のオブジェクトでも全部 truthy になります。

この表を丸暗記するより「ここに無いものは truthy」と覚えるほうが早いです。プロフィールの作品数のように 0 があり得る値だけ、if の書き方に気をつけます。

falsy な値どんなときに出てくるか
false比較の結果そのもの
0件数や金額が 0 のとき
空文字列入力欄が空のまま送られたとき
null無いと決めて入れたとき
undefinedまだ何も入れていないとき
NaN数値に変換できなかったとき

4 / 4

JavaScript入門のコースサムネイル
JavaScript入門13レッスン

null と undefined を見分ける

導入スライド 4

JavaScript入門 - null と undefined を見分ける

まだ入っていない場所を読む

オブジェクトに無いキーを読んでも、JavaScript はエラーで止めません。undefined という値を返して先に進みます。undefined は「まだ何も入っていない」という意味の、それ自体がひとつの値です。

これに対して、書き手が自分で「無い」と決めて入れるほうの値が null です。

title は書いていないので undefined が返ります。エラーにはなりません。

const profile = { name: "田中太郎" }; console.log(profile.name); // "田中太郎" console.log(profile.title); // undefined

1 / 4

誰が入れたのかで呼び名が変わる

undefined は JavaScript が置いていく値、null は書き手が自分で置く値です。意味は近いのに別物なので、typeof で見ると答えも変わります。

let title;
let title;入れていない
const nickname = null;
= null無いと決めた
console.log(title);
console.log(nickname);
console.log(typeof title);
console.log(typeof nickname);
typeof nickname有名なバグ

結果

結果
titleundefined
nicknamenull
typeof title"undefined"
typeof nickname"object"
null == undefinedtrue
null === undefinedfalse

囲った2行が覚えどころです。typeof では null を見分けられません。

typeof null が "object" になるのは JavaScript が生まれた頃の不具合です。直すと世界中の既存のサイトが壊れるので、そのまま残されています。

2 / 4

考えてみよう外しても進めます

nickname が null か undefined のどちらかのときだけ「未設定」と出したいとき、条件はどれで書きますか。

選ぶと、この枚の中で答えと理由を確かめられます。

3 / 4

どちらが出てきているのかの見分け

画面に undefined と出てしまったときは、値が壊れたのではなく「まだ入れていない場所を読んだ」というだけです。どこで置かれた値なのかをたどると、直す場所が決まります。

こうしたとき出てくる値

変数を宣言しただけで何も入れていない

undefined

オブジェクトに無いキーを読んだ

undefined

関数に引数を渡さなかった

undefined

自分で null を入れた

null

探して見つからなかったと返された

null のことが多い

自分のコードから出てくるのが null、JavaScript が置いていくのが undefined、と考えるとだいたい合います。

4 / 4

JavaScript入門のコースサムネイル
JavaScript入門14レッスン

テンプレートリテラル

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門15レッスン

つくる プロフィールを変数にする

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門16レッスン

第2章まとめクイズ

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門17レッスン

比較演算子と ===

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門18レッスン

&& と || が返すもの

導入スライド 4

JavaScript入門 - && と || が返すもの

|| は「はい / いいえ」を返していない

&& と || は、条件をつなぐ演算子として紹介されることが多い書き方です。ただし返ってくるのは true や false ではなく、左右どちらかの値そのものです。プロフィールの表示名を決める場面で、この性質がそのまま既定値の書き方になります。

true が返るなら画面には true と出てしまいます。文字がそのまま出るのは、値そのものが返っているからです。

左に中身があればその値が、空っぽなら右の値が、そのまま返ってきます。

const nickname = ""; const displayName = nickname || "名無し"; console.log(displayName); // 名無し const title = "フロントエンドエンジニア"; console.log(title || "肩書き未設定"); // フロントエンドエンジニア

1 / 4

左で決まったら右は動かさない

|| は左の値を先に見ます。左だけで答えが決まるときは、右に書いた式をそもそも実行しません。これを短絡評価と呼びます。右に重い処理を置いても、必要なときしか走らないということです。

function loadFromServer() {
loadFromServer()必要なときだけ動く
console.log("サーバーに問い合わせた");
return "山田太郎";
}
const saved = "田中花子";
saved先に見るのは左
const name = saved || loadFromServer();
console.log(name);

saved を差し替えて動かす

saved の値loadFromServer は動くかname に入る値
"田中花子"動かない田中花子
""動く山田太郎
null動く山田太郎

1 行目だけ「サーバーに問い合わせた」が出ません。右の関数が呼ばれていないからです。

&& も同じ仕組みで、左が空っぽなら右を見ずに左の値を返します。

2 / 4

考えてみよう外しても進めます

作品をまだ 1 件も登録していない人の画面です。const worksCount = 0; と書いてから worksCount || "作品はまだありません" を評価すると、何が返るでしょうか。

選ぶと、この枚の中で答えと理由を確かめられます。

3 / 4

JavaScript入門 - && と || が返すもの

空っぽ扱いになる値

|| や && が「左は空っぽだ」と判断する値は決まっています。書いていて出会うのはこの 6 つで、ここに無いものは中身があるものとして左が返ります。

0 と空の文字列まで既定値に置き換わるのが困る場面があります。次のレッスンで、そこだけ避ける演算子を使います。

空っぽ扱いになる値プロフィールで出てくる場面
false公開フラグを未設定のままにした
0作品数がまだ 0 件
"" (空の文字列)肩書きを入力せずに保存した
null自己紹介を意図的に空にした
undefinedその項目をまだ作っていない
NaN数値に変換できない文字を計算に使った

4 / 4

JavaScript入門のコースサムネイル
JavaScript入門19レッスン

三項演算子で簡潔に

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門20レッスン

?? で既定値を用意する

導入スライド 4

JavaScript入門 - ?? で既定値を用意する

空っぽの範囲を 2 つだけに絞る

?? は既定値を用意する演算子です。左が null か undefined のときだけ右の値に差し替え、それ以外は左をそのまま返します。値が「まだ無い」のか「0 という値がある」のかを、書き分けられるようになります。

null と undefined はどちらも「値がまだ無い」を表します。?? が面倒を見るのはこの 2 つだけです。

下の行は 0 のまま返ります。0 は値が無いわけではないからです。

const bio = null; console.log(bio ?? "自己紹介はまだありません"); // 自己紹介はまだありません const worksCount = 0; console.log(worksCount ?? "未登録"); // 0

1 / 4

作品数 0 で || と ?? を比べる

作品数を画面に出す場面で、同じ既定値を || と ?? の両方で書いてみます。中身がまったく同じ 0 という値なのに、返るものが変わります。

const worksCount = 0;
const byOr = worksCount || "未登録";
worksCount || "未登録"空っぽ 6 種類すべてを拾う
const byNullish = worksCount ?? "未登録";
worksCount ?? "未登録"null と undefined だけ拾う
console.log(byOr); // 未登録
console.log(byNullish); // 0

左の値ごとの結果

左に置いた値|| の結果?? の結果
0未登録0
"" (空の文字列)未登録"" のまま
false未登録false
null未登録未登録
undefined未登録未登録

下 2 行は結果が同じです。違いが出るのは上の 3 行だけです。

作品数を 0 と出したいなら ??、0 件のときに案内文を出したいなら || です。どちらが正しいかは画面の要件で決まります。

2 / 4

考えてみよう外しても進めます

肩書きを入力せずに保存した人がいます。const title = ""; と書いてから title ?? "肩書き未設定" を評価すると、画面には何が出るでしょうか。

選ぶと、この枚の中で答えと理由を確かめられます。

3 / 4

JavaScript入門 - ?? で既定値を用意する

どちらを使うか決める手順

迷ったら「0 や空欄を本物の値として扱いたいか」だけを考えます。答えが はい なら ??、いいえ なら || です。

?? は || や && と丸括弧なしで並べると、書いた時点でエラーになります。混ぜるときは必ず丸括弧を付けます。

やりたいこと書き方
作品数 0 を 0 と表示したいworksCount ?? "未登録"
作品数 0 のときは案内文を出したいworksCount || "作品はまだありません"
肩書きの空欄を既定値で埋めたいtitle || "肩書き未設定"
項目そのものが無いときだけ埋めたいtitle ?? "肩書き未設定"

4 / 4

JavaScript入門のコースサムネイル
JavaScript入門21レッスン

演算子の優先順位

導入スライド 4

JavaScript入門 - 演算子の優先順位

1 つの式に演算子が 2 つ以上並んだとき

算数で掛け算が足し算より先に計算されるのと同じで、JavaScript の演算子にも効く順番が決まっています。順番を変えたいときは丸括弧で囲みます。まず打ち間違えやすい ! から見ます。

「作品数が 0 ではない」と書いたつもりの上の行は、まったく別の判定になっています。

上の行の ! は === より先に効くので、worksCount だけをひっくり返しています。

const worksCount = 3; console.log(!worksCount === 0); // false console.log(!(worksCount === 0)); // true

1 / 4

&& は || より先に効く

プロフィールの編集ボタンを出すかどうかを、公開状態と持ち主と管理者の 3 つで決めます。丸括弧を書かないと、&& のほうが先にまとまります。

const isPublic = false;
const isOwner = true;
const isAdmin = true;
console.log(isPublic && isOwner || isAdmin); // true
isPublic && isOwner || isAdmin&& が先にまとまる
console.log(isPublic && (isOwner || isAdmin)); // false
(isOwner || isAdmin)丸括弧が最優先

丸括弧を補って読み直す

書いた式実際にまとまる形結果
isPublic && isOwner || isAdmin(isPublic && isOwner) || isAdmintrue
isPublic && (isOwner || isAdmin)書いた丸括弧のままfalse
isAdmin || isOwner && isPublicisAdmin || (isOwner && isPublic)true
(isAdmin || isOwner) && isPublic書いた丸括弧のままfalse

&& と || の並び順を入れ替えても、先にまとまるのはいつも && の側です。

同じ 3 つの値でも、丸括弧の有無だけで編集ボタンが出たり出なかったりします。

2 / 4

考えてみよう外しても進めます

const canEdit = isOwner || isAdmin && isPublic; と書きました。この式に丸括弧を補うとしたら、どの形になるでしょうか。

選ぶと、この枚の中で答えと理由を確かめられます。

3 / 4

JavaScript入門 - 演算子の優先順位

この章で出てくる分だけの早見表

全部を覚える必要はありません。上にあるものほど先に効きます。同じ段の中では左から順に効きます。

順番に自信が無いときは、迷わず丸括弧を書きます。読む人にも意図が伝わるので、余分に書いても損はありません。

先に効く順演算子
1 番目丸括弧 ( )
2 番目! (否定)
3 番目* / % (掛ける、割る、余り)
4 番目+ - (足す、引く)
5 番目< <= > >= (大小の比較)
6 番目=== !== (等しいかの比較)
7 番目&& のあとに ||、そして ??
8 番目= (変数への代入)

4 / 4

JavaScript入門のコースサムネイル
JavaScript入門22レッスン

つくる 表示名を決める

導入スライド未作成
JavaScript入門のコースサムネイル
JavaScript入門23レッスン

第3章まとめクイズ

導入スライド未作成