除了显而易见的事实,即第一种形式可以使用变量而不仅仅是字符串文字,是否有任何理由使用其中一种,如果是这样,在哪种情况下呢?
在代码中:
// Given:
var foo = {'bar': 'baz'};
// Then
var x = foo['bar'];
// vs.
var x = foo.bar;
Run Code Online (Sandbox Code Playgroud)
上下文:我编写了一个生成这些表达式的代码生成器,我想知道哪个更好.
我一直在发现我的一些代码并且回到了一些错误,说使用点表示法更好.我发现我使用方括号表示法(这篇文章很清楚),但是,我想问为什么Crockford更喜欢点符号?我正在研究的项目使用SBN是为了它的完整性,我认为它不会令人困惑或不可读,但如果用户点有明显的原因,我会纠正它.
只是想在继续之前完全理解它!
考虑以下对象:
var nyc = {
fullName: "New York City",
mayor: "Bill de Blasio",
population: 8000000,
boroughs: 5
};
Run Code Online (Sandbox Code Playgroud)
当我尝试使用 for 循环访问每个属性时:
for(var key in nyc){
console.log(nyc[key]);
}
Run Code Online (Sandbox Code Playgroud)
它返回正确的输出(属性值),但是......
for(var key in nyc){
console.log(nyc.key);
}
Run Code Online (Sandbox Code Playgroud)
这在 4 行上返回“未定义”
为什么会出现奇怪的行为,因为两者:
console.log(nyc.fullName);
console.log(nyc['fullName']);
Run Code Online (Sandbox Code Playgroud)
给出相同的o/p。