SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

LINEフロントエンドレンジャーのWeb開発術

Babelで学ぶECMAScript6(入門編)

LINEフロントエンドレンジャーのWeb開発術 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

let

 letはブロックスコープ内でのみ有効な変数を宣言することができる構文です。ES5まではブロックスコープの変数を扱えなかったため、同じ変数名で宣言すると変数は上書きされます。

'use strict';

var x = 1;
if (true) {
    var x = 3;
}
console.log(x);  // 3

 この例では変数xを2か所でvarを使い宣言しているため、後に宣言された値で上書きされます。このような場合、letを使うことで同じ変数名であってもブロックスコープ内でのみ有効な別の変数として扱われるため、安全に変数を使うことができます。

'use strict';

var x = 1;
if (true) {
    let x = 3;
}
console.log(x); // 1

 Babelでトランスパイルしたコードには重複した変数名のプレフィックスに"_"が付与されvarに置き換わり、疑似的にlet相当の動作をするようになります。

'use strict';

var x = 1;
if (true) {
    var _x = 3;
}
console.log(x);

 2つ以上変数名が重複した場合は変数名のサフィックスにインクリメントした数値が付与され変換されます。

'use strict';

var x = 1;
if (true) {
    var _x = 3;
    if (true) {
        var _x2 = 5;
        if (true) {
            var _x3 = 7;
        }
    }
}
console.log(x);  // 1
補足

 letについては弊社Engineer's Blogでも詳しく解説しています。

 

const

 constは定数の利用を可能にします。下のコードではconstで宣言された変数VERSIONに5を代入しています。

'use strict';

const VERSION = 6;
VERSION = 5;

 Babelでトランスパイルすると下のようなエラーが表示されます。Babelではトランスパイル時にconstへの再代入をチェックしてエラーとすることで、定数として扱うことを可能にしています。

SyntaxError: const.es6: Line 4: "X" is read-only
  2 |
  3 | const X = "ES6";
> 4 | X = "ES5";
    | ^
  5 |

 エラーになっている行を削除して再度babelコマンドでトランスパイルを行うとconstはvarに変換されます。

"use strict";

var X = "ES6";

 constはletと同様にブロックスコープです。

'use strict';

const X = "ES6";

if (true) {
    const X = "ES5";
    console.log(X);	// "ES5"
}
console.log(X);	// "ES6"
"use strict";

var X = "ES6";

if (true) {
    var _X = "ES5";
    console.log(_X);
}
console.log(X);

次のページ
Default Parameter

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
LINEフロントエンドレンジャーのWeb開発術連載記事一覧

もっと読む

この記事の著者

清水 大輔(LINE株式会社)(シミズ ダイスケ)

大学図書館向けの図書システム開発に携わった後、2009年 NAVER Japanに入社。その後、NHN Japan株式会社(現・LINE株式会社)との経営統合を経て、現職。現在はLINEにおけるWebサービス全般のフロントエンド開発を担当。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8717 2015/06/05 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング