严格模式是否禁止语句级函数声明?
Does strict mode prohibit statement level function declarations?
"use strict";
if (true) {
function foo() {
}
}
在 PhpStorm 中,此代码显示错误:
Function statement not at top level of a program or function is prohibited
但是,Chrome 可以愉快地执行它,即使在调试器中并且没有任何控制台输出。
现在禁止还是不禁止?
是的,在 ES5 中它们是被禁止的(在严格模式下,所有实现都会抛出)。另请参阅 Kangax' great article 以了解草率模式下的函数语句。
但是,在 ES6 中,它们是具有新语义的块级函数声明。另见 。这似乎是 Chrome 在这里实现的; foo
在 if
块之外不可用。
"use strict";
if (true) {
function foo() {
}
}
在 PhpStorm 中,此代码显示错误:
Function statement not at top level of a program or function is prohibited
但是,Chrome 可以愉快地执行它,即使在调试器中并且没有任何控制台输出。
现在禁止还是不禁止?
是的,在 ES5 中它们是被禁止的(在严格模式下,所有实现都会抛出)。另请参阅 Kangax' great article 以了解草率模式下的函数语句。
但是,在 ES6 中,它们是具有新语义的块级函数声明。另见 foo
在 if
块之外不可用。