2017-09-18 13 views
0
<!DOCTYPE html> 
<html> 
<body> 
    <script> 
     function useStrict(){ 
      "use strict"; 
     } 
      "use strict"; 
      foo=10; 
      alert(foo); 
    </script> 
</body> 
</html> 

エラーが発生しません。結論:strictモードは有効化されていません。しかし、関数定義を削除した場合:"use strict"を組み合わせるとどうなりますか?内部関数 "use strict";グローバルな状況では?

<!DOCTYPE html> 
<html> 
<body> 
    <script> 
      "use strict"; 
      foo=10; 
      alert(foo); 
    </script> 
</body> 
</html> 

私はエラーになります。結論:strictモードが有効になります。私は、グローバルな文脈で"use strict"行を削除し、機能を維持するなら:

<!DOCTYPE html> 
<html> 
<body> 
    <script> 
     function useStrict(){ 
      "use strict"; 
     } 
     foo=10; 
     alert(foo); 

    </script> 
</body> 
</html> 

私はエラーを取得していません。結論:strictモードは有効化されていません。ここで何が起こっているのですか?

"use strict";がグローバルコンテキストと関数の両方にある場合、関数を削除すると厳密なモードが実際にアクティブになるため、キャンセルされるようです。しかし、その後、グローバルなコンテキストで"use strict";行なしで、しかし、機能の中では、厳密なモードは、私には予期せぬアクティブ化されていません。関数呼び出しの中の"use strict";が厳密なモードをそれ自身で起動しないと、前にどのように取り消すことができますか?コンテキストの

+3

'' use strict; "'式は '

関連する問題