5

嗨,我是 Javascript 新手,我正在阅读 Oreilly 的 Javascript 权威指南。在声明声明部分它说:

在此处输入图像描述

我做了一个简单的测试:

var a = 1;
while(a < 5){
    a++;
    function double(a){return a * 2 };
    console.log(double(a));
}    

似乎 node.js 没有给我任何错误并按预期运行。对此有何评论?

4

1 回答 1

-1

这不是真的。但是,您应该记住,它们的行为可能与您预期的不同。

例如,这将起作用:

if( false) {
    function double(a) {return a*2;};
}
else {
    console.log(double(4));
}

即使您可能认为由于if位于永远无法到达的内部而从未定义过该函数,但实际上该函数已提升到当前“块”的顶部(无论是包含函数还是整个<script>标签或文件)并且是因此可以在任何地方访问。

不应该function定义放在if块内,但没有理由不能这样做。

于 2013-03-02T00:16:10.690 回答