javascript中点表示法和括号表示法之间的区别[重复]

Posted

技术标签:

【中文标题】javascript中点表示法和括号表示法之间的区别[重复]【英文标题】:difference between dot notation and bracket notation in javascript [duplicate] 【发布时间】:2014-01-11 06:31:14 【问题描述】:

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

【问题讨论】:

永远不要将变量命名为object 在点表示法中,您按名称访问键,在括号表示法中按字符串访问键。后者可以是动态的。 @thefourtheye,为什么不应该将变量命名为对象?谢谢。 @jstone 有一个内置的 javascript 对象名为Object,所以即使大小写不同,最好不要将变量命名为同名。 【参考方案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 没有名为 key 的成员(myObj.key 尝试获取名为 key 的成员),在下一种情况下,myObj 有一个名为 myVar 的成员(@987654335 @ 尝试获取值在key 中的成员。

点符号

jslint prefers dot notation.

[] 表示法

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

【讨论】:

【参考方案2】:

点表示法写起来更快,读起来更清晰。

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

<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]);

【讨论】:

以上是关于javascript中点表示法和括号表示法之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用括号 (`[]`) 和点 (`.`) 表示法之间的区别 [重复]

JavaScript内置对象

javascript 使用括号表示法访问属性名称

javascript 使用括号表示法访问数组的内容

JSON(JavaScript对象表示法)

点和方括号表示法