3-9 作用域和闭包--解题
2017-11-06 本文已影响5人
留白_汉服vs插画
变量定义,函数声明都会提前。
for循环结束后,添加了10个a标签,但是你点击事件时候,for循环已经结束了。这时候i的值为10,所以不管点击哪一个,都是打印10这里alert(i)的时候,i是自由变量,往上父作用域找,是找到全局作用域,这时候已经是10了。执行完了再点,已经是10了。
这个是外面包了一层,把i传进去,作为函数作用域的变量。声明了10个函数,每个函数都存了一个i对应的值这里是自执行函数,就是不用调用,只要定义完成,立刻执行的函数。
点击的时候,自由变量,还是在父级中找。第7行函数中的i(在9行),往上找,就是4的i,而4中的i,就是定义时候,12传进去的i。
面试问你作用域链怎么理解,这三个点必须要说上面代码解析:定义了一个闭包,封装变量,收敛权限。16行,传入10,_List 还是空的,没有10,所以indexOf(10) 不存在,执行8行,返回true。第二次的时候,检查到10的索引为0,所以返回false。以下同理。
变量声明时候,_下划线表示私有。