'键'在vs object.key中

时间:2016-10-18 07:35:17

标签: javascript object properties

之间有什么区别:

if('mykey' in obj){

}

if(obj.mykey){

}

5 个答案:

答案 0 :(得分:1)

让我们说你有

var obj = { mykey: false };

然后'mykey' in obj将为true,而obj.mykey将为false。一个非常大的区别。

'mykey' in obj表达式将检查对象是否具有属性。 obj.mykey表达式将检索属性的值并使用它。

此外,如果对象obj没有mykey属性,则'mykey' in obj将导致falseobj.mykey会导致 undefined

答案 1 :(得分:0)

if('mykey' in obj){

}

在上面的例子中,mkey是对象的类型" Car"在" obj-Car"列表

,而

 if(obj.mykey){

}

在上面你有mkey作为属性" Engine"对象' obj-Car'

答案 2 :(得分:0)

if ('mykey' in obj)检查obj中是否存在mykey属性。

if (obj.mykey)检查obj中mykey属性的值。如果该属性不存在,则该值可能是未定义的,但它也可以是null,false或空字符串,它也将计算为false。

答案 3 :(得分:0)

在第一种情况下,您正在检查对象中的mykey属性是否存在。在第二种情况下,您要检查对象的mykey属性 false ,其中包括 null undefined 甚至为空。所以在第二种情况下,如果它存在,但值,那么if语句将不会被执行。在第一种情况下它会,因为它只检查属性是否存在。

示例:

var obj = {"a": 1, "b": 0};

if ("b" in obj) { // gets executed }

if (obj.b) { // doesn't get executed }

答案 4 :(得分:0)

let obj = {
   mykey: true

}

if('mykey' in obj){
   //checks if the object has this key
   //true
}


if(obj.mykey){
   //check if object key's value is 'true'
   //true
}

,而

let obj = {
   mykey: false

}

if('mykey' in obj){
   //checks if the object has this key
   //true
}


if(obj.mykey){
   //check if object key's value is 'true'
   //false
}