JavaScript入門:コードを動かすのよくある間違い

レッスンの本文で注意している点を、つまずきの側から39件ぶん並べ直しました。書いた覚えのある形が見つかったら、 そのままレッスンに戻って前後を読めます。

HTML に JavaScript を読み込む

レッスンを読む

パスを間違えている

script.jsjs フォルダに入れたのに src="script.js" のままだと読み込めません。開発者ツールの Network タブに 404 と出ます。src="js/script.js" のようにフォルダ名から書きます

HTML に JavaScript を読み込むで詳しく読む

defer を付けずに head に置く

HTML がまだ組み上がっていない状態で走るため、第 8 章以降で null が返る原因になります。head に置くときは defer とセットにします

HTML に JavaScript を読み込むで詳しく読む

console.log で表示する

レッスンを読む

関数を呼ばずに名前だけ書く

helloConsole は関数そのもの、helloConsole("山田 太郎") が呼び出しです。カッコを忘れると関数の中身が実行されません

console.log で表示するで詳しく読む

文字列を連結する

レッスンを読む

文字列のまま計算しようとする

入力欄から取った値は文字列です。+ は連結になってしまいます

四則演算で詳しく読む

優先順位を勘違いする

「18 ヶ月を 10 倍したい」つもりで次のように書くと、* 10 だけが先に計算されて 72 になります

四則演算で詳しく読む

カッコの閉じ忘れ

開いた数と閉じた数が合わないと構文エラーになります。エディタの色分けで対応を確かめる癖を付けます

四則演算で詳しく読む

コメントで意図を残す

レッスンを読む

ブロックコメントを閉じ忘れる

*/ を書き忘れると、そこから先のコードが全部コメント扱いになります。関数まるごと消えるので、動かないのに理由が分からず悩みます

コメントで意図を残すで詳しく読む

エラーを読んでみる

レッスンを読む

エラーを読まずに書き直す

赤い文字を見た瞬間に閉じてしまい、勘で直そうとするパターンです。まず種類と行番号を声に出して読みます

エラーを読んでみるで詳しく読む

つくる 起動メッセージ

レッスンを読む

比較演算子と ===

レッスンを読む

====== を取り違える

= は代入です。if (published = true) と書くと、比較のつもりが代入になり、いつでも成立する条件ができあがります。等しいかを調べたいときは記号を 3 つ書く、と体に覚えさせてください

比較演算子と ===で詳しく読む

入力値を変換せずに比べる

入力欄の値は文字列です。year === 2026false になります。Number(year) === 2026 のように、比べる前に型をそろえます

比較演算子と ===で詳しく読む

論理演算子と短絡評価

レッスンを読む

&& の戻り値を boolean だと思い込む

views && views >= 100 は、views0 のとき 0 を返します。false ではありません。真偽値を返したいなら Boolean() で包みます

論理演算子と短絡評価で詳しく読む

a === 1 || 2 と書く

「a が 1 または 2」を表したつもりでも、2 は truthy なので式全体が常に truthy になります。a === 1 || a === 2 のように、比較を 2 回書いてください

論理演算子と短絡評価で詳しく読む

短絡評価を忘れて右辺に処理を置く

isReady && init()isReady が偽なら init() が呼ばれません。呼ばれない可能性を意識せずに書くと、初期化されないまま進むバグになります

論理演算子と短絡評価で詳しく読む

三項演算子で簡潔に

レッスンを読む

: を書き忘れる

三項演算子は ?: がセットです。偽のときの値を省略することはできません。「条件が真のときだけ何かしたい」なら三項演算子ではなく if 文の出番です

三項演算子で簡潔にで詳しく読む

戻り値ではなく処理を書いてしまう

三項演算子は値を選ぶための道具です。c ? doA() : doB() のように副作用のある関数を並べると、戻り値が捨てられて読みにくくなります。処理を分けたいときは if 文にします

三項演算子で簡潔にで詳しく読む

入れ子を深くしすぎる

3 段以上の入れ子はレビューでほぼ必ず指摘されます。書けることと読めることは別なので、段数が増えたら素直に if / else if に書き換えてください

三項演算子で簡潔にで詳しく読む

?? で既定値を用意する

レッスンを読む

??||&& と括弧なしで混ぜる

a ?? b || c は SyntaxError です。優先順位が紛らわしいため、言語仕様として括弧を必須にしています。(a ?? b) || c のように、どちらを先に評価するかを自分で明示してください

?? で既定値を用意するで詳しく読む

既定値を毎回書き散らす

同じ既定値を関数のあちこちに ?? で書くと、あとで変えるときに漏れます。既定値は関数の入り口で一度だけ決めて、以降はその変数を使い回すのが読みやすい形です

?? で既定値を用意するで詳しく読む

演算子の優先順位

レッスンを読む

a === 1 || a === 2a === 1 || 2 と書く

後者は (a === 1) || 2 と解釈され、2 は truthy なので式全体が常に truthy になります。比較は毎回きちんと書きます

演算子の優先順位で詳しく読む

! の範囲を勘違いする

!published && views > 0(!published) && (views > 0) です。「公開中かつ閲覧数ありではない」と書きたいなら !(published && views > 0) と括弧が必要です

演算子の優先順位で詳しく読む

つくる 表示名を決める

レッスンを読む

数値の既定値に || を使う

今回は既定値が 0 なので worksCount || 0 でもたまたま同じ結果になります。しかし既定値が 0 以外のとき、たとえば views || 10 と書くと、実際に 0 回だった閲覧数が 10 にすり替わります。数値には ??、と決めておくと事故りません

つくる 表示名を決めるで詳しく読む

数値と文字列の連結を忘れる

"作品 " + count + " 件"+ は、左が文字列なので連結として働きます。順番を変えて count + " 件" と書くと数値が文字列に変換されて連結されますが、count + 1 + " 件" のように算術を混ぜるときは、意図した順に計算されているか確かめてください

つくる 表示名を決めるで詳しく読む