JavaScript作用域链

什么叫做全局作用域:

  1.在最外层函数和最外层函数定义的变量所处的环境就是全局作用域。2.在内层函数中,所有没有用var申明的变量,自动变成全局作用域下的属性。

局部作用域:

   一个函数的括号范围就叫局部作用域,但是for语句等并没有局部作用域。

作用域链决定了哪些数据能被函数访问。当一个函数创建后,它的作用域链会被创建此函数的作用域中可访问的数据对象填充。

  内部的函数。

  局部变量的优先级大于全局变量的优先级

词法作用域:词法作用域是指在词法分析阶段就确定了,不会改变。变量的作用域是在定义时决定而不是执行时决定,也就是说词法作用域取决于源码,通过静态分析就能确定,因此词法作用域也叫做静态作用域。

动态作用域:动态作用域是在运行时根据程序的流程信息来动态确定的,而不是在写代码时进行静态确定的。 动态作用域并不关心函数和作用域是如何声明以及在何处声明的,只关心它们在何处调用。
 

 var value = 1;
 function foo() {
   console.log(value);
 }
 function bar() {
   var value = 2;
   foo();
 }
 bar();

如上所示,执行bar()的时候,执行到了foo函数。foo函数中并没有value值,JavaScript会自动到定义foo函数的上一层作用域下去寻找value值,也就是1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值