JavaScript作用域

什么是作用域?
  一个变量可用的范围
1、全局作用域window:全局变量
  在程序的任何位置都能反复使用===》全局污染
2、函数作用域:局部变量
  局部变量(AO:Action Object):仅在函数内可用
函数的生命周期:
  1)开始执行前(生命提前阶段)
  创建执行环境栈(数组):临时保存正在执行的函数执行环境
  向执行环境中添加一个默认程序main(),该方法创建出一个全局作用域的对象window

 

  2)定义函数时

      创建函数对象,封装函数的定义

      声明函数变量,引用了函数对象,函数对象的scope属性引用,创建函数时的作用域

  3)调用函数时
     在ECS中加入一个新的元素(执行环境)记录新函数的调用
    创建一个活动对象,保存本次调用用到的局部变量(函数的参数,在函数体内使用var关键字声明的数据)
    ESC中的新执行环境元素 ,引用活动对象
     活动对象中的parent属性引用函数的scope指向的父级作用域对象

 

  4)调用函数后
     执行环境栈中本次函数的执行环境出栈
     导致活动对象被释放,导致局变量一同释放

 

 

 

 

作用域链
  右多级作用域连续引用形成的链式结果
  掌握一切变量的使用顺序 :先在局部找,没有则延作用域链向父级作用域中找

 

 

转载于:https://www.cnblogs.com/Godfather-twq/p/11294802.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值