ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-for-in循环VS in-operator

2019-10-12 20:39:26  阅读:235  来源: 互联网

标签:accessor javascript for-loop enumeration prototype


我认为自己是JS的资深人士,但是就在这之前我第一次意识到for … in循环与in运算符有很大不同:

"length" in []; // true
for (k in []) { if(k == "length") alert(); }; // k will never be "length"

所以这引出我的问题:为什么in …循环中始终存在in运算符?

恕我直言,这完全是一种误导,因为它做了不同的事情.同样,首先使用for操作使JS引擎具有所有可枚举的属性,然后在该子集上使用in运算符的想法是错误的:仅仅是因为in运算符接受所有可能的属性,无论是原型还是拥有的,无论是存取器还是数据,属性.那么,如果for已经减少到可枚举的对象属性,它将如何过滤掉所有内容?

解决方法:

So this brings me to my question: why is the in operator at all present in the for ... in loop?

不是. for…in循环构造中的in令牌不是运算符,同样它在表达式中也不是一个

x = {in: 5}.in

它只是将for ( … in … )for (…; …; …)循环区分开的标记之一.鉴于没有for(…)语句,因此relational expression中in令牌的作用永远不会与此冲突.

标签:accessor,javascript,for-loop,enumeration,prototype
来源: https://codeday.me/bug/20191012/1902780.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有