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

IT技术 javascript syntax brackets
2021-02-11 17:35:47

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

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

点符号

jslint 更喜欢点符号

[] 符号

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

点符号写起来更快,读起来更清晰。

方括号表示法允许访问包含特殊字符的属性和使用变量选择属性。

<form id="myForm">
<div><label>
<input type="checkbox" name="foo[]" value="1"> 1
</label></div>
<div><label>
<input type="checkbox" name="foo[]" value="2"> 2
</label></div>
<div><label>
<input type="checkbox" name="foo[]" value="3"> 3
</label></div>
</form>

错误示例:

var inputs = myForm.foo[];

另一方面,方括号表示法允许:

var inputs = myForm["foo[]"];

由于方括号是字符串的一部分,因此它们的特殊含义不适用。方括号表示法的第二个优点是在处理变量属性名称时。

for (var i = 0; i < 10; i++) {
doSomething(myForm["myControlNumber" + i]);
}