首页 > 解决方案 > for 循环是否等同于方法?

问题描述

我一直在尝试理解闭包,但是我看到和阅读的每个示例都包含函数内部函数的相同示例,但是我面临的所有闭包问题都包含循环内部的函数。

for (var i = 0; i < 2; i++){
    setTimeout(() => console.log(i));
}

以上面的代码为例,setTimeout是浏览器内部的API方法,i没有被传递。

function sayHello(name) {
  var text = 'Hello ' + name;
  var say = function() { console.log(text); }
  say();
}
sayHello('Joe');

上面经常用到的闭包例子就不一样了,因为我setTimeOut在一个for loop. setTimeout没有函数/循环内部定义/创建,我只是在调用它。因此,它可以在函数之外的其他地方定义,这完全违背了闭包。我在这里错过了什么oO

其次,我有一个for loop, 而不是另一个函数之上的函数。上面的变量声明是等价的吗?

标签: javascript

解决方案


推荐阅读