函数声明是否必须不出现在条件语句中?

时间:2013-03-01 23:57:54

标签: javascript

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

enter image description here

我做了一个简单的测试:

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

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

1 个答案:

答案 0 :(得分:-1)

那不是真的。但是你应该记住,它们可能没有你想象的那样。

例如,这将起作用:

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

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

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