(function(){ for(var i = 0; i < 5; i++) {} console.log(i) // i = 5 })()
Erste Frage: Zu welchem Teil des JS-Wissens gehört das? Zweite Frage: Erklären Sie in Laiensprache, warum i gleich 5 ist? 0o0
温故而知新,可以为师矣。 博客:www.ouyangke.com
这个问题是闭包吗? 我觉得并不是闭包,并没有函数的嵌套. 它就是一个 函数本地变量 和 匿名函数 的问题.
创建一个匿名函数并立即执行并没有涉及闭包吧. 只是循环结束, i 的值变成 5 退出循环, console.log(i)打印当前的 i, 即 5.
i
5
console.log(i)
这与以下是等同的:
var test = function() { for(var i = 0; i < 5; i++) {} console.log(i) // i = 5 } test();
这不属于闭包,只是for的循环速度后打印了一下值而已
这就是个 js 没有块级作用域的问题,只有函数作用域导致的问题。。。居能直接扯上闭包。。。我服。。。
在JavaScript中是没有块级作用域这么一说的,所以for循环{}以及if语句{}内部的变量,在外部是可以访问的。
作用域分为全局作用域和局部作用域
全局作用域是当你创建一个文档的时候,系统为你内置的。局部作用域是通过创建一个函数来实现的。
这个一般都出现在考察闭包的问题中
i + 1 循环了5次,所以 i 是 5
你应该想了解js中的闭包部分问题
因为执行console.log时for循环执行完成了 i自然等于5
去看看闭包结合定时器吧,或者事件绑定
js中的闭包,
这个问题是闭包吗? 我觉得并不是闭包,并没有函数的嵌套. 它就是一个 函数本地变量 和 匿名函数 的问题.
创建一个匿名函数并立即执行并没有涉及闭包吧. 只是循环结束,
i
的值变成5
退出循环,console.log(i)
打印当前的i
, 即 5.这与以下是等同的:
这不属于闭包,只是for的循环速度后打印了一下值而已
这就是个 js 没有块级作用域的问题,只有函数作用域导致的问题。。。居能直接扯上闭包。。。我服。。。
在JavaScript中是没有块级作用域这么一说的,所以for循环{}以及if语句{}内部的变量,在外部是可以访问的。
作用域分为全局作用域和局部作用域
全局作用域是当你创建一个文档的时候,系统为你内置的。
局部作用域是通过创建一个函数来实现的。
这个一般都出现在考察闭包的问题中
i + 1 循环了5次,所以 i 是 5
你应该想了解js中的闭包部分问题
因为执行console.log时for循环执行完成了 i自然等于5
去看看闭包结合定时器吧,或者事件绑定
js中的闭包,