[Javascript] Function scope
JavaScript Function Scope
2023-09-14 09:00:55 时间
We have code like:
var numbers = [1,2,3]; for(var i in numbers){ setTimeout(function(){console.log(numbers[i]); }, 0); } //3 //3 //3
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]); }) })(); } //1 //2 //3
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).
相关文章
- javascript (function(){})()是个什么鬼?!
- JavaScript中防止重复提交
- JavaScript window.open()属性
- JavaScript中的Function(函数)对象详解
- Javascript之旅——第九站:吐槽function
- 面向对象的Javascript(5):继承
- [Javascript] Object.freeze: using Object.freeze in function params to enforce immutabtility
- [Javascript] Multiply Two Arrays over a Function in JavaScript
- [Javascript Crocks] Apply a function in a Maybe context to Maybe inputs (curry & ap & liftA2)
- [Javascript] Required function arguments in Javascript
- [Javascript] Understand Function Composition By Building Compose and ComposeAll Utility Functions
- [Javascript] Prototype 2 Object.create()
- Javascript闭包演示
- 用JavaScript,获取Table中指定的行、列
- [Javascript] Object.freeze: using Object.freeze in function params to enforce immutabtility
- [Javascript] Create a `range` Helper Function with a Generator
- [Javascript] Specify this using .call() or .apply()
- [Javascript] Understand Function Composition By Building Compose and ComposeAll Utility Functions
- [Javascript] Implement zip function
- [Javascript] MetaProgramming: function name
- [Javascript] lodash: memoize() to improve the profermence
- [Javascript] property function && Enumeration
- [Immutable.js] Converting Immutable.js Structures to Javascript and other Immutable Types
- [Javascript] What is JavaScript Function Currying?
- [Javascript] Function Expression Ex, Changing Declarations to Expressions
- Chrome 开发者工具 Initiator 面板单击后看不到 JavaScript 源代码的解决方法
- 如何在SAP Server Side JavaScript里消费destination
- javascript 移动鼠标高亮显示改行