这是什么意思“函数定义可能不会出现在if语句,while循环或任何其他语句中。”我对此声明感到困惑。
答案 0 :(得分: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() {}
}