(function(){
for(var i = 0; i < 5; i++) {}
console.log(i) // i = 5
})()
第一个问题:请问这属于js的哪一部分知识内容?
第二个问题:通俗地解释下为什么i会等于5?
0o0
PHP中文网2017-06-12 09:31:37
这个问题是闭包吗? 我觉得并不是闭包,并没有函数的嵌套. 它就是一个 函数本地变量 和 匿名函数 的问题.
创建一个匿名函数并立即执行并没有涉及闭包吧. 只是循环结束, i
的值变成 5
退出循环, console.log(i)
打印当前的 i
, 即 5.
这与以下是等同的:
var test = function() {
for(var i = 0; i < 5; i++) {}
console.log(i) // i = 5
}
test();
伊谢尔伦2017-06-12 09:31:37
在JavaScript中是没有块级作用域这么一说的,所以for循环{}以及if语句{}内部的变量,在外部是可以访问的。
作用域分为全局作用域和局部作用域
全局作用域是当你创建一个文档的时候,系统为你内置的。
局部作用域是通过创建一个函数来实现的。