18386


**ECMAScript5 で、"use strict" 設定した際だけに起きる内容は、ECMAScript6 でも継続されるのでしょうか？**  
・例えば、関数呼出した際、「strictモードでは this が undefined になり、非strictモードではグローバルの this (ブラウザでは
window)になる現象」は、継続されるのでしょうか？  
・相変わらず明示的に"use strict" を付与しなければ、非strictモード状態でundefined にはならない？


CC BY-SA 3.0
2015-11-03T23:20:16.250
18382
2016-01-21T11:18:37.887
2015-11-11T23:59:48.493
7886
7886
question
ecmascript-6 javascript
"use strict" と ECMAScript6 の関係性について


ECMAScript 2015 (ES6) / ECMAScript 2016 でも Strict Mode の区別は継続します。  
後方互換性のために、既存の振る舞いは変更できません。

ただ、後方互換性を考える必要が無い所はデフォルトで Strict Mode の振る舞いになります。  
具体的には、

  * Class 定義の内部
  * Modules として読み込まれたコード全体

です。

## Class 定義の内部

[code]

    class A {
        foo() {
            console.log("ここは Strict Mode です");
        }
    }
    
    console.log("ここは Strict Mode ではありません");
    
    function foo() {
        "use strict";
        console.log("ここは Strict Mode です");
    }
    
[/code]

## Modules として読み込まれたコード全体

ブラウザでは、次のように `type="module"` として JavaScript コードを読み込むと、そのコードはモジュールとして扱われます。

[code]

    <script type="module" src="foo.js"></script>
    
[/code]

モジュールとして読み込まれたコードは、全体が強制的に Strict Mode になります。

* * *

See Also:

  * <http://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-code>
  * <https://html.spec.whatwg.org/multipage/scripting.html#attr-script-type>


CC BY-SA 3.0
2015-11-04T00:56:16.030
18386
2016-01-21T11:18:37.887
2016-01-21T11:18:37.887
4809
4809
18382
answer