in
运算符似乎永远存在。
var obj = {foo: 'bar'};
if ('foo' in obj) {
console.log(obj.foo);
}
if (undefined !== obj.foo) {
console.log(obj.foo);
}
上面代码中的两个if
块执行相同的操作。这个例子本身可能过于简单,但通过阅读MDN,对我来说,我不会使用它。除了输入更少的字符和可读性之外,还有什么好处/优点我没有看到?你能给我一个in
运营商使用的好例子吗?
答案 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'运算符除了仅检查值之外还有其他好处。