您现在的位置是:主页 > news > gif在线制作/深圳网站建设推广优化公司

gif在线制作/深圳网站建设推广优化公司

admin2025/6/13 16:01:17news

简介gif在线制作,深圳网站建设推广优化公司,wordpress小程序改造,推荐一下做年会视频的网站1.作用域比较复杂的说法是根据名称来查找变量的一套规则,还有的说法是变量数据的集合。作用域其实是指一个包含了所有在同一个区域声明的变量和函数的集合,那么如何决定这些变量数据和函数是属于同一区域的呢?这就由他们最初声明时的位置来决…

gif在线制作,深圳网站建设推广优化公司,wordpress小程序改造,推荐一下做年会视频的网站1.作用域比较复杂的说法是根据名称来查找变量的一套规则,还有的说法是变量数据的集合。作用域其实是指一个包含了所有在同一个区域声明的变量和函数的集合,那么如何决定这些变量数据和函数是属于同一区域的呢?这就由他们最初声明时的位置来决…

1.作用域
比较复杂的说法是根据名称来查找变量的一套规则,还有的说法是变量数据的集合。作用域其实是指一个包含了所有在同一个区域声明的变量和函数的集合,那么如何决定这些变量数据和函数是属于同一区域的呢?这就由他们最初声明时的位置来决定的。作用域首先分为两个部分:全局作用域和局部作用域。
全局作用域:在代码任何地方都可以访问到的变量和函数保存在全局作用域中。
定义在全局的(最外层的)变量和函数:
图片描述

这段代码中,变量a和函数Foo定义在最外层,所以在代码的任何地方都可以访问到他们。
未声明的变量,自动定义为全局变量:
图片描述

变量a没有声明,但对它进行了赋值,这不是一个错误的操作,因为引擎会默认的将变量a声明为全局变量。
局部作用域:在函数内部声明的变量和函数保存在函数的局部作用域中。
图片描述

变量a是全局变量,所以在函数bar的内部可以访问到a,变量c定义在函数bar内部,所以c是存在在函数bar的局部作用域中。函数bar定义在函数Foo内部,所以在全局作用域中找不到这个函数,当试图去访问它时,会有ReferenceError。变量b同理也无法在外部作用域中被访问。
这段代码中,console.log(a+b+c)输出9,函数bar内部只定义了变量c,但是他却可以访问到外部的变量a和b,这就引出了下面所要讨论的作用域链。
2.作用域链
作用域链是因为函数发生了嵌套,当一个函数嵌套在另一个函数内就发生了作用域的嵌套。当一个函数要查找变量时,它会从自已的作用域开始查找,如果找不到就向上一级,找嵌套自己的父级作用域,这样一级一级的查找,知道找到为止,或者到最外层作用域(全局作用域)。
图片描述

函数bar需要访问三个变量:a、b、c,首先会查找自己的局部作用域,只找到了声明在内部的变量c,所以向上一级查找,就到了嵌套它的函数,也就是他的父级Foo函数的局部作用域,在Foo的局部作用域中找到了需要的变量a和b。这里注意一下,全局作用域中也有一个相同命名的变量a,但是当查找到需要的变量时,搜索就会停止,不会再进行下去,所以全局作用域中a不会被搜索。

参考资料:
1.YOU DON'T KNOW JS ,KYLE SIMPSON