您好我是Javascript的新手,我正在阅读Oreilly的Javascript权威指南。在声明声明部分,它说:
我做了一个简单的测试:
var a = 1;
while(a < 5){
a++;
function double(a){return a * 2 };
console.log(double(a));
}
似乎node.js没有给我任何错误并按预期运行。对此有何评论?
答案 0 :(得分:-1)
那不是真的。但是你应该记住,它们可能没有你想象的那样。
例如,这将起作用:
if( false) {
function double(a) {return a*2;};
}
else {
console.log(double(4));
}
即使您可能认为函数永远不会被定义,因为它位于永远不会到达的if
内,该函数实际上被提升到当前“块”的顶部(无论是包含函数还是整个<script>
标签或文件)因此可以在任何地方访问。
你不应将function
块定义在if
块内,但没有理由不这样做。