A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sangwentao 中级黑马   /  2016-6-13 18:30  /  1792 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

js为变量赋值时(将b赋给a),首先在其作用域中搜索,看b是在当前语句之前还是之后定义。若是之前定义,则进行正常赋值。若是之后定义,则a为undefined(即使全局中有名叫b的变量)。若没有b的定义则沿作用域链上溯。

var b=1;
function(){
    var a=b;    //a=1;
}

var b=1;
function(){
    var a=b;    //undefined;
    b=1;
}

function(){
    var a=b;  //错误
}

1.检查当前变量对象有无该变量。
2.若有,检查在左值之前还是之后,之前正常赋值,之后undefined。若无,沿作用域链上溯寻找上游变量对象。若最终未找到则error。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马