先看一段javascript代码
<script type="text/javascript">
var test = "Rainn";
function say()
{
alert(test);
var test = "Tom";
alert(test);
}
say(); //调用方法
</script>结果是什么?
第一反应是,第一次alert的时候,say的作用域中"还"没有声明 test ,所以应该向上级作用域中寻找,因此第一次alert的结果是 "Rainn"。第二次alert的时候,在作用域内重新声明了局部的变量 test,所以第二次是Tom。
那么实际结果呢?结果是弹出undefined跟Tom。
因为在js的作用域中,会把当前作用域中声明的变量提升到顶部,上述代码等价于
<script>
var test = "Rainn";
function say()
{
var test;
alert(test);
var test = "Tom";
alert(test);
}
say();
</script>所以第一次执行才会弹出undefined。
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。


精彩评论