我试图理解.Notation和[]符号之间的区别。在下面的问题中,我使用if (object[key] === true)正确的答案。当我使用if (object.key === true)它不起作用。有人可以解释为什么与众不同。
.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"; };
使用点表示法时,key表示对象中的实际属性,该属性将不存在。因此,undefined返回不等于的true。
key
undefined
true
使用[]表示法时,您将使用变量中的名称访问对象中的属性key。因此,这将起作用。
例如,
var myObj = { myVar : 1 }; for (var key in myObj) { console.log(key); console.log(myObj.key); console.log(myObj[key]); }
这将打印,
myVar undefined 1
因为,myObj没有成员命名key(myObj.key尝试获取名称为的成员key),而在下一种情况下,myObj有成员命名为myVar(myObj[key]尝试获取具有in的值的成员key)。
myObj
myObj.key
myVar
myObj[key]
[]表示法
这提供了灵活性。您可以使用变量动态访问成员。