javascript – Frage, warum der Wert von i gleich 5 ist
欧阳克
欧阳克 2017-06-12 09:29:37
0
8
943
(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

Antworte allen(8)
Ty80

这个问题是闭包吗? 我觉得并不是闭包,并没有函数的嵌套. 它就是一个 函数本地变量匿名函数 的问题.

创建一个匿名函数并立即执行并没有涉及闭包吧. 只是循环结束, i 的值变成 5 退出循环, console.log(i)打印当前的 i, 即 5.

这与以下是等同的:

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

左手右手慢动作
  1. 你应该想了解js中的闭包部分问题

  2. 因为执行console.log时for循环执行完成了 i自然等于5

刘奇

去看看闭包结合定时器吧,或者事件绑定

左手右手慢动作

js中的闭包,

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage