js作用域链中声明变量提前
2016-09-02 00:00
106 查看
先看一段代码
结果是什么?
第一反应是,第一次alert的时候,say的作用域中"还"没有声明 test ,所以应该向上级作用域中寻找,因此第一次alert的结果是 "Rainn"。第二次alert的时候,在作用域内重新声明了局部的变量 test,所以第二次是Tom。
那么实际结果呢?结果是undefined跟Tom。
因为在js的作用域中,会把当前作用域中声明的变量提升到顶部,上述代码等价于
所以第一次执行的时候,才会是undefined。
<script> 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。
相关文章推荐
- JavaScript 中对变量和函数声明的“提前(hoist)”
- js中变量声明提前
- JS的作用域和声明提前,js中局部变量泄露为全局变量
- js 变量声明提前
- JavaScript 中对变量和函数声明的“提前”
- JavaScript中提前声明变量或函数例子
- 变量声明提前和函数声明提前
- Javascript编程笔记一:理解变量和函数提前声明
- JavaScript 中对变量和函数声明提前的示例
- 变量声明提前
- js 中声明变量 “提前”
- js变量声明提前
- js(javascript)小谈变量声明(显隐声明,声明提前)
- JavaScript中提前声明变量或函数例子
- JavaScript中对变量和函数声明的提前
- 变量 和函数声明提前问题
- javscript函数内变量声明提前
- JavaScript 中对变量和函数声明的“提前(hoist)”
- 深入浅出理解JavaScript函数作用域和变量声明提前
- (转)JavaScript 中对变量和函数声明的“提前(hoist)”