【发布时间】:2019-07-16 20:02:29
【问题描述】:
我正在阅读一本名为 Eloquent JavaScript 的关于 JavaScript 的书。以下是书中的一个sn-p:
"在 JavaScript 中访问属性的两种主要方式是使用点和使用 方括号。 value.x 和 value[x] 都访问 value 上的属性——但是 不一定是同一个属性。不同之处在于如何解释 x。 使用点时,点后面的单词是属性的字面名称。 使用方括号时,括号之间的表达式计算为 获取属性名称。而 value.x 获取名为 value 的属性 “x”, value[x] 尝试计算表达式 x 并使用转换后的结果 到一个字符串,作为属性名称。”
在玩弄这些信息时,我碰巧尝试了这段代码。它返回数组第一个索引处的值。为什么会这样?
arr = [1,2,3];
len = "length";
console.log(arr[len]);
// 输出如预期的“3”
arr = [1,2,3];
console.log(arr.length);
//按预期输出为“3”
arr = [1,2,3];
len = "length";
console.log(arr[length]);
//输出为“1”
//我期待的输出是一个错误,或者至少是值“3”,因为 JS 是一种灵活的语言。
【问题讨论】:
标签: javascript