JavaScript中`in`运算符的好处/优点是什么?

时间:2015-01-19 12:37:36

标签: javascript

in运算符似乎永远存在。

var obj = {foo: 'bar'};
if ('foo' in obj) {
   console.log(obj.foo);
}
if (undefined !== obj.foo) {
   console.log(obj.foo);
}

上面代码中的两个if块执行相同的操作。这个例子本身可能过于简单,但通过阅读MDN,对我来说,我不会使用它。除了输入更少的字符和可读性之外,还有什么好处/优点我没有看到?你能给我一个in运营商使用的好例子吗?

3 个答案:

答案 0 :(得分:1)

以下是展示

的一些示例
var obj = { foo: undefined }
obj.foo !== undefined;  // false
'foo' in obj;           // true

使用in运算符时,测试给定对象中指定的属性是否为值

答案 1 :(得分:1)

来自MDN

  

如果将属性设置为undefined但不删除它,则in运算符将为该属性返回true。

因此,in运算符可用于查找对象中是否存在属性,即使它是undefined。如果属性不存在,则显示的第二种方式undefined !== obj.foo将返回false,或者未定义。

示例:

var obj = { myProp: undefined };

'myProp' in obj; // = true
obj.myProp !== undefined; // false

如果要在为对象赋值之前确认对象上存在属性,我可以看到这很有用,因为即使该属性以前不存在,赋值也会起作用。

答案 2 :(得分:-1)

在javascript中使用in运算符我们也不能检查特定属性,但可以迭代列表。

ES 5规范详细说明了for-in语句的两种不同语法:

1. for(objectExpression中的var变量){statement}
2. for(objectExpression中的LeftHandSideExpression){statement}

对于前。

如果我有一个像

这样的Array对象
var objarray=new Array('rakesh','naresh','dinesh','nilesh');

然后我可以直接遍历数组对象。

for(var a in objarray)
{
console.log(objarray[a])
};

我们获得的输出是:

rakesh
naresh
dinesh
nilesh

因此,'in'运算符除了仅检查值之外还有其他好处。