“函数定义可能不会出现在 if 语句、while 循环或任何其他语句中”是什么意思。我对这种说法感到很困惑。
问问题
84 次
1 回答
0
您在书中阅读的一个问题是,在某些浏览器中,函数定义(与函数赋值不同)本质上被提升到宿主函数的顶部,因此将其放在语句中(就像在if
语句中一样)是彻头彻尾的误导。代码将使它看起来只有在语句的分支执行时才会定义函数if
,但不一定是这种情况。所以,这是一个不好的做法。它可能在许多情况下都有效,但这是一种不好的做法。
所以,而不是这样:
function main(foo) {
if (foo) {
function internal() {
// code here
}
// code here
}
}
把内部函数放在最上面;
function main(foo) {
function internal() {
// code here
}
if (foo) {
// code here
}
}
仅供参考,在严格模式下,内部函数定义只允许在顶部。条件函数赋值总是可以用这种语法来完成:
var internal;
if (foo) {
internal = function() {}
}
于 2012-12-17T07:17:27.387 回答