最奇怪的javaScript数组文字

Weirdest javaScript array literal

本文关键字:数组 文字 javaScript      更新时间:2023-09-26

当我在我的项目中时,我不小心将一个数组命名为"name",如下

var name = ["abc","abc","abc","abc"];

它在我的项目中产生了不一致性,因为正如我所期望的,名称[0]会产生第一个abc,好吧!,它给了我第一个字母a!!!。我在Firefox控制台中尝试了这个数组,它总是给我一个数组,而不是我在Chrome控制台中输入的字符串。所以我在Chrome中再次将变量重命名为

var foo = ["abc","abc","abc","abc"]; 

foo[0]给了我第一个"abc"。请随意尝试,我猜命名"名称"有问题,但不知道为什么。感谢

在顶层,var namewindow.name相同。

window.name已保留,因此Chrome将其隐式转换为字符串。

请注意,将数组转换为字符串只是用逗号分隔:

["abc","abc","abc","abc"].toString()

是:

"abc,abc,abc,abc"

Window对象有一个名称属性,指定如下:

Window对象的name属性必须在获取时返回浏览上下文的当前名称,并且在设置时将浏览上下文的名称设置为新值

(重点矿井)

因此,通过例如在全局上下文中执行var window = ...来设置window.name,将把浏览上下文的名称设置在右侧。由于名称必须是字符串,所以setter会将其转换为字符串。