[Javascript] Function scope
2024-08-30 19:36:56
We have code like:
var numbers = [1,2,3]; for(var i in numbers){
setTimeout(function(){console.log(numbers[i]);
}, 0);
} //
//
//
Note:
1. function block doesn't create scope!
2. setTimeout function run after all the other code finished.
Therefore, before setTimeout get run, for block already exec 3 times and i was set to 2.
Once setTimeout get running, it prints out numbers[i] which is 3.
Now, we change the code to:
var numbers = [1,2,3]; for(var i in numbers){
(function(){
var j = i;
setTimeout(function(){
console.log(numbers[j]);
})
})();
} //
//
//
Note:
1. function does create new scope.
2. the (function(){})() run immedatly.
3. (function(){}) inside for block actually is closure which does remeber the local var value (in our case is var j).
最新文章
- python基础补漏-06-内置模块
- CSS will-change 属性
- 世界那么Big,组件那么Small
- 2016.11.17 NOI plus day0
- Swift开发小技巧--TabBar中间按钮的添加方案
- Spring 定时任务的配置
- 查看用户的SQL执行历史
- 《OD大数据实战》MongoDB环境搭建
- python 中 time 模块 格式化 format
- 对Spring的一些理解
- CentOS6.5安装LAMP环境APACHE的安装
- CEF3 怎样禁止右键菜单
- Unity 3D 如何修改新建脚本中的 C# 默认创建的 Script 脚本格式
- hdu5443 ST表裸题:求区间最大
- idea language level 介绍
- MSSqlServer 主从同步复制原理(发布/订阅)
- TinyMCE Editor
- unity3D iTween的使用
- 第三百一十九节,Django框架,文件上传
- POJ3259 Wormholes 【Bellmanford推断是否存在负回路】