私は、JSを学び、「厳格な使用」に出くわしました。次に、ここでは一つ一つのjavascript関数のI書き込み用万一I「の使用は、厳格な」?@Bergiは「 -ファイルごとに一度-それはすべてあなたの機能によって継承されているので、あなただけのモジュールスコープの『厳格な使用』に置く必要があります」と述べています。それはによって自身の内側に「厳格な使用」特定のモジュールの用途に用いた各機能「それは、すべての機能によって継承される」というのは本当でしょうか?
それはによって自身の内側に「厳格な使用」特定のモジュールの用途に用いた各機能「それは、すべての機能によって継承される」というのは本当でしょうか?
場合、この関数は、strictモードで実行されます:
(1)関数はES6モジュール内である(これらはすべてかかわらず、厳密なモードで実行する)、又は
適切な(2)がある'use strict'
関数定義上のディレクティブは、字句。
このような内部のような、いくつかのあまり一般的でないインスタンスに加えてconstructor
。
方法'use strict'
字句的に継承され、同じ方法変数を参照することができる動作、及びどのように可変範囲の動作-機能の任意の外部ブロックが厳密である場合、内部関数が同様に厳密です。したがって、たとえば、次のコードで:
'use strict';
function foo() {
function bar() {
function baz() {
}
}
}
あなたの中に入れ、他のどのようなコードに関係なくfoo
、bar
、およびbaz
、すべてのこれらの関数のは、どのようにしているの実行に関係なくは、strictモードで実行されます。これらの機能の一つはソースから呼び出された場合はされていません strictモードで実行されている、呼び出された関数は、まだstrictモードで実行されます。例えば:
<script>
'use strict';
function foo() {
return function bar() {
return function baz() {
console.log('baz running. strict:', this === undefined);
}
}
}
foo()()();
</script>
<script>
// Non-strict script calling strict function:
foo()()();
</script>