全局作用域和局部作用域

1.作用域

1.什么是作用域(Scope)

通常来说,一段程序代码中所用到的名字不总是有效和可用的,而限定这个名字的可用性和代码范围就是这个名字的作用域。

js作用域:就是代码名字(变量)作用的范围。

2.js的作用域的分类(ES6之前)

js作用域可以分为两大类:全局作用域和局部作用域(函数作用域)。

(一)全局作用域:

     直接编写在script标签之中的js代码,都是全局作用域。

    或者是一个单独的js文件中的。

    全局作用域在页面打开时创建,页面关闭时销毁;

     在全局作用域中有一个全局对象window (代表的是一个浏览器的窗口,有浏览器创建),可以直       接使用。

在全局作用域中:

1.所有创建的变量都会作为window对象的属性保存。

2.所有创建的函数都会作为window 对象的方法保存。

(二)局部作用域:

      在函数内部就是局部作用域,这个代码的名字只在函数的内部起作用

     调用函数是创建函数作用域,函数执行完毕之后,函数作用域就销毁;

     每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的。

2.变量的作用域

在javascript中,根据作用域的不同个,变量可以分为两种:全局变量和局部变量

(一)全局变量

  1.在全局作用域下声明的变量叫做全局变量(在函数外部定义的变量)

  2.全局变量在全局(代码的任何位置)下都可以使用;全局作用域中无法访问到局部作用域的中       的变量

  3. 全局变量第一种创建方式:在全局作用域下var声明的变量是全局变量

  4.全局变量第二种创建方式:如果在函数内容,没用使用vue 关键字声明直接赋值的变量也属于         全局变量(不建议使用)。

  (变量num 直接写在script标签下,所以num 是全局变量。)

(二)局部变量:

   1.在局部作用域下声明的变量叫局部变量(在函数内部定义的变量)。

   2.局部变量只能在函数内部使用,在局部作用域中可以访问到全局变量。

   3.在函数内部var声明的变量就是局部变量。

   4.函数的形参实际上就是局部变量。

全局变量和局部变量的区别:

全局变量:在任何一个地方都可以使用,全局变量只用在浏览器关闭的时候才会销毁,比较占用                      内存资源

局部变量:只能在函数内部使用,但其所在代码块被执行时,会被初始化;当代码块执行完毕就                      会销毁,因此更节省节约内存空间。

3.作用域链

只要是代码,就有一个作用域,写在函数内部的就叫局部作用域。

如果函数中还有函数,那么在这个作用域中又可以诞生一个作用域;

当在函数作用域中操作一个变量的时候,会先在自身作用域中查找,如果有就直接使用,如果没有就向上级作用域中寻找,如果全局作用域中也没有,那么就报错。

根据内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称之为函数作用域链 。

作用域链:内部函数访问外部函数的变量,采取的是链式查找的方法来决定去哪个机构。这种结构称之为作用域链。

作用域链的原则:就近原则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值