Summer Training Day 8.
IFE Task.
Task 15.
;
|
|
最后加一句防止按钮重复点击:
异步、作用域与闭包.
执行环境与作用域
1.执行环境(execution context,简称环境),每个环境都有与之对应的一个变量对象(variable object),包含在环境中定义的所有变量和函数。全局执行环境,是最外围的执行环境,在Web中被认为是windows对象。某个执行环境中的代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁,但在全局执行环境的直到应用程序退出才会被销毁。
2.每个函数都有自己的执行环境,当执行流进入一个函数,函数的环境会被推入一个环境栈中,执行完之后栈将其环境弹出,把控制权交还给之前的执行环境。
3.当代码在一个环境中执行时,会创建变量对象的一个作用域链(scope chain)。其前端始终是当前执行的代码所在环境的变量对象。如果是函数,则其活动对象(activation object)为变量对象。活动对象最开始时只包含argument对象(此对象在全局是不存在的),全局执行环境的变量始终是作用域链的最后一个对象。
(摘自JavaScript高级程序设计)
闭包
定义:闭包是指有权访问另一个函数作用域中的变量的函数。
在函数内部创建另一个函数就是一种创建闭包。
攻略↓
Excuse me?这个前端88面试在搞事!
汤姆大叔的博客:”深入理解JavaScript系列(16):闭包(Closures)”
所以,不只是setTimeout的问题.
|
|
与
|
|
解决方法:
|
|
其实归根结底是函数声明但没有执行的问题.
以上.