Javascript 为什么下面的3行代码返回1?

Javascript 为什么下面的3行代码返回1?,javascript,Javascript,我正在读一本关于JavaScript的书,名为《雄辩的JavaScript》。以下是本书的一个片段: “在JavaScript中访问属性的两种主要方法是使用点和 方括号。value.x和value[x]都访问值上的属性,但 不一定是相同的属性。区别在于x的解释方式。 使用点时,点后的单词是属性的文字名称。 使用方括号时,括号之间的表达式计算为 获取属性名。而value.x获取名为的值的属性 “x”,值[x]尝试计算表达式x并使用转换后的结果 设置为字符串,作为属性名称。“ 在处理这段信息时,我碰

我正在读一本关于JavaScript的书,名为《雄辩的JavaScript》。以下是本书的一个片段:

“在JavaScript中访问属性的两种主要方法是使用点和 方括号。value.x和value[x]都访问值上的属性,但 不一定是相同的属性。区别在于x的解释方式。 使用点时,点后的单词是属性的文字名称。 使用方括号时,括号之间的表达式计算为 获取属性名。而value.x获取名为的值的属性 “x”,值[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是一种灵活的语言。

因为arr的第0个元素是1

i、 你可能是有意这么做的

arr[len]

长度本身是零,因此您实际上是在做这个arr[0]

length是window.length,此链接对此进行了解释

(后加)

混淆的地方似乎是长度与window.length相同。 下面的链接可能有助于理解这一点,但如果你是初学者,我可能会接受它,稍后再返回

获取,这是
窗口的属性,返回窗口的帧数


console.log(长度);//0
不能将变量名用作字符串

length
的值为
0
(因为它与
window.length
,实际上是相同的),因此可以看到数组的第一个元素:

让arr=[1,2,3];
console.log(长度);//0

console.log(arr[length]);//1
是的,我一发布问题就认为它返回了第0个索引值。但为什么它返回“长度本身为零”——它是如何初始化为0的?我确实解释过,因为长度(窗口上的iFrame数)是0。您可能没有意识到,当您键入长度时,它实际上是窗口的缩写。lengthOh是的。读一下。我不知道iFrame的概念。谢谢你,托尼