我正在读一本关于JavaScript的书,名为Eloquent JavaScript。以下是该书的摘录:
“在JavaScript中访问属性的两种主要方法是用点和方括号。value.x和value [x]都访问value的属性,但不一定是相同的属性。区别在于x的解释方式。使用点时,点后的单词是属性的字面名称;使用方括号时,将计算括号之间的表达式以获取属性名称。而value.x获取名为“ x”的属性, “ value [x]尝试对表达式x求值,并使用转换为字符串的结果作为属性名称。”
在玩弄这些信息时,我碰巧尝试了这段代码。它返回数组第一个索引处的值。为什么这样?
arr = [1,2,3];
len = "length";
console.log(arr[len]);
Run Code Online (Sandbox Code Playgroud)
//输出为预期的“ 3”
arr = [1,2,3];
console.log(arr.length);
Run Code Online (Sandbox Code Playgroud)
//预期输出为“ 3”
arr = [1,2,3];
len = "length";
console.log(arr[length]);
Run Code Online (Sandbox Code Playgroud)
//输出为“ 1”
//由于JS是一种灵活的语言,所以我期望的输出是错误或至少为值“ 3”。
因为arr的第零个元素是1
也就是说,您可能打算这样做
arr [len]
长度本身为零,因此您实际上正在执行此arr [0]
长度是window.length,此链接说明
https://www.w3schools.com/jsref/prop_win_length.asp
(稍后添加)
混乱似乎与window.length相同。下面的链接可能有助于您理解,尽管如果您是初学者,我可能会接受它,然后再返回。
Javascript中的变量声明语法(包括全局变量)之间的区别?