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

参见英文答案 > JavaScript property access: dot notation vs. brackets?                                    11个
我试图理解.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";
};

解决方法:

使用点表示法时,键表示对象中的实际属性,该属性不存在.因此,返回undefined不等于true.

使用[]表示法时,您将使用变量键中的名称访问对象中的属性.所以,这将有效.

例如,

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尝试使用名称键获取成员),在下一种情况下,myObj有一个名为myVar的成员(myObj [key]尝试使用key中的值获取成员) .

点符号

jslint prefers dot notation.

[]表示法

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

上一篇:python – 为什么不分配给空列表(例如[] =“”)错误?


下一篇:Javascript,使用包含其名称的字符串引用变量?