jst*_*one 13 javascript syntax brackets
我试图理解.Notation和[]符号之间的区别.在我下面的问题中,当我使用时,if (object[key] === true)我得到了正确的答案.当我使用if (object.key === true)它不起作用.有人可以解释为什么它不同.
var myObj = {
one: false,
two: false,
three: false,
four: true,
five: false,
six: false
};
var myFunc = function (object) {
for (var key in object) {
if (object[key] === true) {
return "There is a true value in this object";
} else {
}
}
return "Sorry, there are no true values in this object";
};
Run Code Online (Sandbox Code Playgroud)
the*_*eye 16
使用点表示法时,key表示对象中的实际属性,该属性不存在.因此,undefined返回不等于true.
使用[]表示法时,您将使用变量中的名称访问对象中的属性key.所以,这将有效.
例如,
var myObj = {
myVar : 1
};
for (var key in myObj) {
console.log(key);
console.log(myObj.key);
console.log(myObj[key]);
}
Run Code Online (Sandbox Code Playgroud)
这将打印,
myVar
undefined
1
Run Code Online (Sandbox Code Playgroud)
因为,myObj没有成员命名key(myObj.key尝试获取具有该名称的成员key),并且在下一种情况下,myObj有一个名为的成员myVar(myObj[key]尝试获取具有值的成员key).
点符号
[]表示法
这提供了灵活性.您可以使用变量动态访问成员.