如何深入理解JavaScript中的作用域链原理?

更新于
2026-10-01 16:43:56
0阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2053个文字,预计阅读时间需要9分钟。

如何深入理解JavaScript中的作用域链原理?

JavaScript的作用域链是一个非常重要的知识点,理解了JavaScript的作用域链,能帮助我们更好地理解很多异常问题。下面我们来通过一个小例子来看一下前面所说的声明提前的例子。

javascriptfunction test() { console.log(a); // 输出:undefined var a=1; console.log(a); // 输出:1}test();

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
[脚本出错]

其实不然,知道函数内的提前说明,就知道这是不正确的。

阅读全文

本文共计2053个文字,预计阅读时间需要9分钟。

如何深入理解JavaScript中的作用域链原理?

JavaScript的作用域链是一个非常重要的知识点,理解了JavaScript的作用域链,能帮助我们更好地理解很多异常问题。下面我们来通过一个小例子来看一下前面所说的声明提前的例子。

javascriptfunction test() { console.log(a); // 输出:undefined var a=1; console.log(a); // 输出:1}test();

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
[脚本出错]

其实不然,知道函数内的提前说明,就知道这是不正确的。

阅读全文