JavaScript 有个特性称为函数声明提前;
先看一段代码:结果是弹出 0 ,和预期一样,
<script>
var abc=0;
(function(){
alert(abc);
}());
</script>
再看第二段代码:结果是undefined,
<script>
var abc=0;
(function(){
alert(abc);
var abc=1;
}());
</script>
为什么这里的结果是 undefined 呢?
其实通过js引擎解析的过程,我们可以这样来改写代码;
<script>
var abc=0;
(function(){
var abc;
alert(abc);
abc=1;
console.log(abc);
}());
console.log(abc);
</script>
函数内部第一步是把声明放在最上面,赋值是在声明之后,所以产生 undefined 的结果;
JS函数声明与变量提升
本文探讨了JavaScript中函数声明提前的特性,并通过实例演示了变量声明如何影响其作用域内的值。解释了为何在某些情况下变量会显示为undefined。
389

被折叠的 条评论
为什么被折叠?



