关于 for...in 循环的困惑 [重复]
Posted
技术标签:
【中文标题】关于 for...in 循环的困惑 [重复]【英文标题】:Confusion about for...in loop [duplicate] 【发布时间】:2016-01-30 04:44:02 【问题描述】:全部:
[更新问题已解决]我遇到的问题是: 因此,如果我使用“in”,则 func 是索引号,而使用“of”,则 func 是函数。 更多详情请参考Variables and scoping in ECMAScript 6
这是我学习 ES6 的第一个小时,我想知道为什么我不能使用如下语法:
for(func in funcs)
在:
"use strict";
var funcs = [];
for(let i=0; i<10; i++)
funcs.push(function()
console.log(i);
);
let func;
for(func in funcs)
func();
它总是报告:
Uncaught TypeError: func is not a function
【问题讨论】:
你是说for of
? for in
仍然和 ES5 中的意思一样
@Bergi 谢谢,是的,这就是我应该使用的。事实证明,我混合了它们的用法。
【参考方案1】:
for... in
迭代对象键。从第一天开始就使用 javascript。
我认为您将它与 for... of
混淆了,这是一个 ES6 功能,用于循环 iterable objects,包括数组。
for(let func of funcs)
func();
Babel.js REPL
【讨论】:
谢谢,这对我来说是新知识!我会在 7 分钟后接受这个 谢谢,现在我清楚了用法,所以如果我使用“in”,则func是索引号,而使用“of”则是函数。 是的,有一些good reasons 不应该用于数组。for... of
没有同样的问题。
对此的另一个困惑是:我读到“let”可以防止重复声明同一变量,但是如果我将“let”放在 for 中,它仍然有效,这是否意味着每一轮循环,ES6 将创建一个新块来保存该轮中的特定 func 变量?
我删除了 cmets,因为我认为它们有点令人困惑 - 这篇文章应该澄清 :-) 2ality.com/2015/02/es6-scoping.html。以上是关于关于 for...in 循环的困惑 [重复]的主要内容,如果未能解决你的问题,请参考以下文章