奇怪的事情发生在数组

时间:2015-11-20 15:09:17

标签: javascript jquery

我在codepen.io上玩,但由于某些原因我的代码没有按预期工作:

var name = ["one",'two','three'];
$('body').append('<p>'+ name[0] + '</p>');

该代码附加了字母&#34; o&#34;到页面。当我将代码切换到:

var person = ["one",'two','three'];
$('body').append('<p>'+ person[0] + '</p>');

&#34;一个&#34;被附加到页面。有谁知道发生了什么?

以下是示例:http://codepen.io/ntibbs/pen/ZbPPBm

1 个答案:

答案 0 :(得分:6)

您似乎处于全局范围内,因此当您声明name变量时,您将与全局window.name属性发生冲突。

此属性具有为字符串,因此每当您为其指定任何内容时,它都会被强制转换为字符串。

["one",'two','three']被强制转换为字符串时,它会首先执行Array.join,最后会得到"one,two,three",并将其分配给namename[0]为您提供了"o"的第一个字符。

使用不同的变量名称person,您不会看到此问题,因为您没有对抗窗口属性。