質問: **ECMAScript5 で、"use strict" 設定した際だけに起きる内容は、ECMAScript6 でも継続されるのでしょうか?** ・例えば、関数呼出した際、「strictモードでは this が undefined になり、非strictモードではグローバルの this (ブラウザでは window)になる現象」は、継続されるのでしょうか? ・相変わらず明示的に"use strict" を付与しなければ、非strictモード状態でundefined にはならない?
回答: ECMAScript 2015 (ES6) / ECMAScript 2016 でも Strict Mode の区別は継続します。 後方互換性のために、既存の振る舞いは変更できません。 ただ、後方互換性を考える必要が無い所はデフォルトで Strict Mode の振る舞いになります。 具体的には、 * Class 定義の内部 * Modules として読み込まれたコード全体 です。 Class 定義の内部 ``` class A { foo() { console.log("ここは Strict Mode です"); } } console.log("ここは Strict Mode ではありません"); function foo() { "use strict"; console.log("ここは Strict Mode です"); } ``` Modules として読み込まれたコード全体 ブラウザでは、次のように `type="module"` として JavaScript コードを読み込むと、そのコードはモジュールとして扱われます。 ``` ``` モジュールとして読み込まれたコードは、全体が強制的に Strict Mode になります。 See Also: * *