ブロックレベルの関数宣言は ES6 で導入され、そのセマンティクスについての疑問が生じました。
Non-strict mode | Strict mode |
---|---|
Hoisted and visible outside of the block | Not visible outside of the block |
ブラウザでは、Web 拡張機能のセマンティクスは非厳密モードのブロックレベル関数に適用されます:
Web Extensions | Hoisted? | Visible Outside of Block? | TDZ? |
---|---|---|---|
Yes | To both the block and function | Yes, as a var declaration | Undefined prior to block execution |
コンテキスト内の「厳密モード」ブロックレベル関数の厳密さは、関数宣言を含むブロックが出現する関数の厳密さを指します。次の例はこれを示しています:
// Non-strict surrounding code { function foo() { "use strict"; } }
このコードは関数 foo の「厳密モード」とみなされます。
以上がブロックレベルの関数宣言は ES6 厳密モードと非厳密モードでどのように動作しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。