javascript - 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
, 而不是另一个函数之上的函数。上面的变量声明是等价的吗?
解决方案
推荐阅读
- jsviews - Firefox 的事件对象为空
- c# - 从服务器获取当前日期时间并将其转换为 c# 中的特定本地时间
- php - 将从查询生成器收到的 NULL 转换为 Laravel 中的空字符串
- javascript - 翻转的卡片不会在第二个动画中保留后部 div
- oracle12c - osb 12c 中的存储过程调用
- javascript - javascript & css:如何在覆盖 div 上动态创建 SVG 并定义大小
- python - 将ÿ字符转换为单字节0xFF python
- c# - 使用 Azure gremlin 查询验证文档是否存在
- c++ - 程序托管 - 任一方向的隧道/NAT IPv4/IPv6
- jquery - 如何禁用基于会话变量的按钮悬停?