【发布时间】:2015-10-29 22:12:07
【问题描述】:
"use strict";
if (true) {
function foo() {
}
}
在 PhpStorm 中,此代码显示错误:
禁止不在程序或函数顶层的函数语句
但是,Chrome 很高兴地执行它,即使在调试器中并且没有任何控制台输出。
现在是禁止还是不禁止?
【问题讨论】:
标签: javascript strict
"use strict";
if (true) {
function foo() {
}
}
在 PhpStorm 中,此代码显示错误:
禁止不在程序或函数顶层的函数语句
但是,Chrome 很高兴地执行它,即使在调试器中并且没有任何控制台输出。
现在是禁止还是不禁止?
【问题讨论】:
标签: javascript strict
是的,在 ES5 中它们是被禁止的(在严格模式下,所有实现都会抛出)。另请参阅Kangax' great article 了解草率模式下的函数语句。
然而,在 ES6 中,它们是具有新语义的块级函数声明。另见What are the precise semantics of block-level functions in ES6?。这似乎是 Chrome 在这里实现的; foo 在 if 块之外不可用。
【讨论】:
JSX Harmony。