2019.04現在のECMAScriptブラウザ対応状況はこちら
IE11以外のブラウザでは、殆どES6が使えます。プロジェクトによってはIEが外せない場合もあるのでIE11でも使える書き方を紹介します。
ブロックスコープ
定数、変数には影響範囲があります。しかし、Javascriptにはブロックスコープがなくグローバル汚染を防ぐために即時関数を書いていました。
1 2 3 4 5 6 7 8 9 |
// javascriptの場合 (function() { })(); // jQueryの場合 $(function() { }); |
今は、 {} で囲むだけでブロックスコープとなります。
1 2 3 4 5 6 7 |
{ { const a = 20; console.log(a); // 20が出力 } console.log(a); // スコープ外なのでエラー } |
変数宣言
今までは
var 宣言が使われていました。var宣言した変数はグローバル変数なので、
ブロックスコープに対応しておらずバグなどの原因になりやすかったです。
ES6からは極力
var は避け、
let,
constを使うと、変数の影響範囲が絞られデバッグ等がしやすくなります。
- let
-
- 値に名前をつけて取り扱いたい時
- 値を使いまわしたい時
- 再代入可能な変数を扱いたい時
構文 意味 let 変数名 = 値 変数にデータを代入。値の再代入は可能。
初期値を省略した場合undefinedを返す。 - const
-
- 値に名前をつけて取り扱いたい時
- 値を使いまわしたい時
- 再代入不可能な定数を扱いたい時
構文 意味 const 定数名 = 値 定数にデータを設定。値の再代入は不可。
初期値は省略できません。
間庭のデスクに『JavaScript コードレシピ集』という書籍(ラボ購買品)が置いてありますので、興味のある方はどうぞ。