先看一段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。
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论