“函数定义可能不会出现在语句中”的含义是什么

时间:2012-12-17 06:44:44

标签: javascript

这是什么意思“函数定义可能不会出现在if语句,while循环或任何其他语句中。”我对此声明感到困惑。

1 个答案:

答案 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() {}
}