繁体   English   中英

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

[英]What's the meaning of “Function definitions may not appear within statements”

“函数定义可能不会出现在if语句,while循环或任何其他语句中”的含义是什么。 我对这句话很困惑。

您在书中所读内容的一个问题是,在某些浏览器中,函数定义(与函数赋值不同)实际上被提升到宿主函数的顶部,因此将其放入语句中(例如,在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() {}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM