【发布时间】:2015-10-31 17:29:35
【问题描述】:
我认为自己是一名 JS 资深人士,但我才第一次意识到 for ... in 循环与 in 运算符的作用非常不同:
"length" in []; // true
for (k in []) { if(k == "length") alert(); }; // k will never be "length"
所以这让我想到了我的问题:为什么 in 运算符会出现在 for ... in 循环中?
恕我直言,这完全是误导,因为它做不同的事情。此外,首先 for 操作使 JS 引擎获取所有可枚举属性,然后在该子集上使用 in 运算符的想法是错误的:仅仅因为 in 运算符接受 all可能的属性,无论是原型还是拥有,无论是访问器属性还是数据属性。那么如果for 已经简化为可枚举的对象属性,它如何过滤掉任何东西呢?
【问题讨论】:
-
您的意思是将其输入到 Brendan Eich 的电子邮件中吗?
-
for in循环中的令牌in不是in运算符。 -
@Pointy:也许他会来回答这个问题? :-)
-
@Bergi:嗯,我想总结一下。 :)
-
ES6 也有了新的含义, * 代表 function* 和 yeid* 。扩展运算符是三个点,下划线成为箭头函数的无参数。 map和Map是完全不同的两个东西,[+!+[]+!+[]+!+[]+!+[]]+[+!+[]+!+[]]就是生命的意义。这就是人类可读语法的本质。
标签: javascript for-loop prototype enumeration accessor