[crayon-50361fa0048c0/] [crayon-50361fa004ca3/] 执行结果为2 1 test的作用域中有木有ag?有,定义了ag=2之后,alert()找到了2,输出2 [crayon-50361fa00508b/] [crayon-50361fa005473/] [crayon-50361fa00585a/] 执行结果为undefined 1 test的作用域中有木有ag?有,在test的作用域下ag定义了,但是 ag定义在alert之后, 因此其实alert之前是 var ag = undefined ,alert(ag)找到了undefined,输出undefined [crayon-50361fa005c43/] [crayon-50361fa00602b/] test中有木有ag?木有!跑到上层去找,找到了ag=10 因此alert(ag)输出10; [crayon-50361fa006417/] [crayon-50361fa0067fd/] alert在全局作用域下,window中有木有ag?有,定义了 但是在alert之后,因此跟狸子2一样的原理, alert之前,var ag = undefined ,alert(ag)找到了undefined,输出undefined [crayon-50361fa006be4/] [crayon-50361fa006fcb/] alert在全局作用域下,window中有木有ag?木有!因此直接报错,ag未定义 作用域链中查找最重要的一点是变量对象的属性(如果有的话)须考虑其中--源于ECMAScript 的原型特性。如果一个属性在对象中没有直接找到,查询将在原型链中继续。即常说的二维链查找。(1)作用域链环节;(2)每个作用域链--深入到原型链环节 由于上面的话我还不是特别明白,待续 [crayon-50361fa0073b3/] [crayon-50361fa0077b5/] »本文地址:http://99jty.com/?p=406 »订阅本站:http://winysky.com/feed/»当你从RSS阅览器里看到这篇文章时,还没有评论,还不赶紧过来抢沙发?