一尘不染

javascript中点表示法和括号表示法之间的区别

javascript

我试图理解.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";
};

阅读 252

收藏
2020-05-01

共1个答案

一尘不染

使用点表示法时,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没有成员命名keymyObj.key尝试获取名称为的成员key),而在下一种情况下,myObj有成员命名为myVarmyObj[key]尝试获取具有in的值的成员key)。

[]表示法

这提供了灵活性。您可以使用变量动态访问成员。

2020-05-01