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

我做了一个简单的测试:
var a = 1;
while(a < 5){
a++;
function double(a){return a * 2 };
console.log(double(a));
}
Run Code Online (Sandbox Code Playgroud)
似乎node.js没有给我任何错误并按预期运行.对此有何评论?
Nie*_*sol -1
这不是真的。但您应该记住,它们的行为可能与您预期的不同。
例如,这将起作用:
if( false) {
function double(a) {return a*2;};
}
else {
console.log(double(4));
}
Run Code Online (Sandbox Code Playgroud)
即使您可能认为该函数由于位于if从未到达的内部而从未定义,但该函数实际上被提升到当前“块”的顶部(无论是包含函数还是整个<script>标记或文件)并且是因此可以在任何地方访问。
您不应该将function定义放在if块内,但没有理由不能这样做。
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |