javascript中点符号和括号符号的区别
我试图理解javascript中点符号和括号符号的区别,javascript,syntax,brackets,Javascript,Syntax,Brackets,我试图理解.Notation和[]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 =
.Notation
和[]
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
尝试获取名为key
的成员),在下一种情况下,myObj
有一个名为myVar
的成员(myObj[key]
尝试获取名为key
的成员)
点表示法
[]符号
这提供了灵活性。您可以使用变量动态访问成员。点表示法写入速度更快,读取更清晰
方括号表示法允许访问包含特殊字符的属性以及使用变量选择属性
<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[]"];
由于方括号是字符串的一部分,它们的特殊含义不适用。方括号表示法的第二个优点是在处理变量属性名称时
for (var i = 0; i < 10; i++) {
doSomething(myForm["myControlNumber" + i]);
}
for(变量i=0;i<10;i++){
剂量测定法(myForm[“myControlNumber”+i]);
}
切勿将变量命名为对象
在点表示法中,您可以按名称访问键,在括号中按字符串访问键。后者可以是动态的。@thefourtheye,为什么一个变量不应该被命名为object?谢谢。@jstone有一个名为的内置JavaScript对象,因此最好不要使用相同的名称命名变量,即使大小写不同。
for (var i = 0; i < 10; i++) {
doSomething(myForm["myControlNumber" + i]);
}