全面了解JavaScript的作用域链,能问出什么长尾词的问题呢?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2122个文字,预计阅读时间需要9分钟。
JavaScript 的作用域链是一个至关重要的知识点,理解了作用域链,能帮助我们更好地理解许多异常问题。下面通过一个小例子,来看一下前面提到的声明提前的例子。
javascriptvar a=1;console.log(a); // 输出:1
在这个例子中,虽然 `console.log(a)` 写在 `var a=1;` 之前,但由于 JavaScript 的变量提升特性,变量声明会被提前到函数的最开始位置,所以 `console.log(a)` 会输出 `1`。
JavaScript的作用域链
这是一个非常重要的知识点了,了解了JavaScript的作用域链的话,能帮助我们理解很多‘异常'问题。
下面我们来看一个小例子,前面我说过的声明提前的例子。
var name = 'Skylor.min'; function echo() { alert(name); var name = 'mm'; alert(name); alert(age); } echo();
对于这个例子,没有接触过这方面的时候,第一反应是会纠结下,这第一个的name,到底调用全局变量的name,还是函数内部的name呢,如果调用全局的,可是函数内部也用定义和赋值啊, 如果调用函数内部的局部变量的话,那么他的值是mm吗?还是引用全局的'Skylor.min'呢?
于是这个小例子就会有这样的错误答案:
Skylor.min
mm
[脚本出错]
其实不然,知道函数内的提前说明,就知道这是不正确的。
本文共计2122个文字,预计阅读时间需要9分钟。
JavaScript 的作用域链是一个至关重要的知识点,理解了作用域链,能帮助我们更好地理解许多异常问题。下面通过一个小例子,来看一下前面提到的声明提前的例子。
javascriptvar a=1;console.log(a); // 输出:1
在这个例子中,虽然 `console.log(a)` 写在 `var a=1;` 之前,但由于 JavaScript 的变量提升特性,变量声明会被提前到函数的最开始位置,所以 `console.log(a)` 会输出 `1`。
JavaScript的作用域链
这是一个非常重要的知识点了,了解了JavaScript的作用域链的话,能帮助我们理解很多‘异常'问题。
下面我们来看一个小例子,前面我说过的声明提前的例子。
var name = 'Skylor.min'; function echo() { alert(name); var name = 'mm'; alert(name); alert(age); } echo();
对于这个例子,没有接触过这方面的时候,第一反应是会纠结下,这第一个的name,到底调用全局变量的name,还是函数内部的name呢,如果调用全局的,可是函数内部也用定义和赋值啊, 如果调用函数内部的局部变量的话,那么他的值是mm吗?还是引用全局的'Skylor.min'呢?
于是这个小例子就会有这样的错误答案:
Skylor.min
mm
[脚本出错]
其实不然,知道函数内的提前说明,就知道这是不正确的。

