标签:目的 是你 概念 str 操作 undefined 查找 为什么 efi
答:在《你不知道的javascript》书中提到,作用域就是根据名称查找变量的一套规则。古语有“无规矩不成方圆”,但是没有方圆,规矩又给谁用?所以个人理解作用域就是“规矩”+”方圆“。作用域是在创建的时候就确定的。
答:全局,函数。
答:前面已经说了,作用域是“规矩”+“方圆”。作用域的最大用处就是隔离变量,不同作用域下同名变量不会有冲突。举个例子:XXX县下面有一个王家庄,一个李家庄,王家庄和胡家堡各有一个李家,两家都有一个叫小明的儿子,胡家堡的老李家给自家小明说了个叫王小翠的媳妇。胡家堡的李小明很开心,挑了个黄道吉日准备去派处所把小翠的户口迁到自家,试想,如果没有王家庄和胡家堡之分,xxx县派处所的民警就会很懵逼,两个李小明,王小翠户口迁谁家???有了王家庄和胡家堡的区分,这事就很好办了。
答:JS引擎进入作用域,编译器就会开始工作,它会执行两轮操作(注意:进入不同的作用域都会触发同样的操作,这也是执行环境压栈和出栈的由来):
初始化变量 :声明参数并初始化,局部变量声明,函数声明并初始化,将这些变量保存到环境变量对象当中,
答:当前作用域-->上一级作用域-->...-->全局作用域
答:作用域嵌套的时候
答:首先需要了解一个概念:自由变量:在A作用域中使用的变量x,却没有在A作用域中声明(即在其他作用域中声明的),对于A作用域来说,x就是一个自由变量。
自由变量的取值需要到创建它的作用域,正因为这样,所以才有了作用域链的出现。
书中是这样说的:LHS 和 RHS 查询都会在当前执行作用域中开始,如果有需要(也就是说它们没有找到所需的标识符),就会向上级作用域继续查找目标标识符,这样每次上升一级作用域,最后抵达全局作用域,无论找到或没找到都将停止。举个例子:现实生活中我们经常看到寻人启事(请原谅我举这个令人悲愤的例子),寻找一个人,会在自己家找,自己家没有,会到村,镇,县,市,... 由此会构成一个家-->村-->镇-->县-->市-->...的寻找链。也就是说作用域链的主要目的就是自由变量的取值。
标签:目的 是你 概念 str 操作 undefined 查找 为什么 efi
原文地址:http://www.cnblogs.com/sanxiaoshan/p/6657508.html