1. 大文字と小文字の区別(Case Sensitivity)
JavaScriptでは、変数名・関数名・予約語など、すべてが大文字小文字を区別します。
つまり、次の2つはまったく別の識別子です。
let name = "Taro";
let Name = "Hanako";
console.log(name); // "Taro"
console.log(Name); // "Hanako"- 識別子(identifier)には、英字・数字・アンダースコア
_・ドル記号$が使えます。 - 先頭は数字にできません。
- 予約語(
if,for,classなど)は使用できません。 - Unicode文字も識別子に使用可能です(例:
let 変数 = 1;もOK)。
空白と改行(Whitespace and Newlines)
JavaScriptでは、空白・タブ・改行は基本的に無視されます。
ただし、トークン(単語)を区切る役割を果たす場合は重要になります。
たとえば次の2つは同じ意味です。
let x = 1 + 2;
let x=1+2;しかし、識別子の途中に空白を入れると構文エラーになります。
let my name = "Ken"; // ❌ エラー3. 文の終わりとセミコロン(Semicolon and ASI)
JavaScriptは「自動セミコロン挿入(Automatic Semicolon Insertion, ASI)」という仕組みを持っています。
文末にセミコロンがなくても、多くの場合は自動で補ってくれます。
let x = 10
let y = 20
console.log(x + y)これは有効なコードです(実行時に自動的にセミコロンが補われます)。
しかし、ASIの誤動作によるバグが起きるケースがあります。
ASIによる代表的なバグ例
(1) return の後の改行
function f() {
return
{
value: 42
}
}
console.log(f());➡ 結果:undefined
理由:return の直後の改行で自動セミコロンが挿入され、return; と解釈されるためです。
正しい書き方は:
function f() {
return {
value: 42
}
}(2) 行頭が ( や [ の場合
let a = 1
[2, 3].forEach(n => console.log(n))このコードは a[2,3].forEach(...) と誤って解釈され、TypeError になります。
正しい書き方は:
let a = 1;
[2, 3].forEach(n => console.log(n));または:
let a = 1
;[2, 3].forEach(n => console.log(n))(3) 即時実行関数(IIFE)の前にセミコロンがない場合
let b = 2
(function() { console.log('IIFE'); })()➡ b が関数呼び出しとして扱われてエラーになります。
安全な書き方:
let b = 2;
(function() { console.log('IIFE'); })();または:
let b = 2
;(function() { console.log('IIFE'); })()セミコロンの推奨スタイル
- チーム開発や安全性を重視する場合は常にセミコロンを明示的に書くのが推奨。
- 自動フォーマッター(Prettierなど)を使うと、一貫したコードスタイルを保てます。
- セミコロン省略派でも、行頭が
(や[の場合は必ずセミコロンを追加するのがベストプラクティス。
まとめ
| 項目 | 内容 | 注意点 |
|---|---|---|
| 大文字小文字 | 区別する | name と Name は別物 |
| 空白・改行 | 無視されるがトークンを分ける | 改行がASIを誘発することも |
| セミコロン | 自動補完されるが安全ではない | 特に return, (), [] の前後に注意 |
| 安全策 | 明示的に書く | PrettierやESLintで統一 |
JavaScript | MDN
JavaScript (JS) は軽量でインタープリター型(あるいは実行時コンパイルされる)第一級関数を備えたプログラミング言語です。ウェブページでよく使用されるスクリプト言語として知られ、多くのブラ...
