之间有什么区别:
if('mykey' in obj){
}
和
if(obj.mykey){
}
答案 0 :(得分:1)
让我们说你有
var obj = { mykey: false };
然后'mykey' in obj
将为true
,而obj.mykey
将为false
。一个非常大的区别。
'mykey' in obj
表达式将检查对象是否具有属性。 obj.mykey
表达式将检索属性的值并使用它。
此外,如果对象obj
没有mykey
属性,则'mykey' in obj
将导致false
而obj.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
}