javascript 作用域与作用域链

var a = 10;
function fn(){
    var b = 20;
    console.log(a); //10
    console.log(b);	//20
}

var a = 10;
function fn(){
    var a = 30;
    var b = 20;
    console.log(a); //30
    console.log(b);	//20
}
//局部变量里有a则用自己的,没有则往外找
//如果到全局都没有找到a则报错
var a = 10;
function fn(){
    var b = 20;
    function x(){
        console.log(a);//10
    }
    x();
}

var a = 10;
function fn(){
    var b = 20;
    function x(){
        a = 30;//找的哪个a则改变的是哪个a的值
    }
    x();
}
 console.log(a);//30 

//可写入也可读取
//写入值即使没找到对应的变量也不报错,但读取值找不到变量会报错
//写入找不到变量自动将变量变成全局变量 window.a
  1. 全局var function关键词定义的变量,相当于给 window 对象添加了属性
  2. 每一个局部作用域的产生都有它独特的AO对象(活动对象),无法获取和使用这个AO对象
  3. 全局为GO对象
  4. 查找变量时,先从自己从AO对象查找,找不到则去上一层的AO对象中找,直到全局变量,这样会组成一个作用域的链式关系,称之为作用域链
  5. var的GO为window let有自己的GO对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值