我在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;被附加到页面。有谁知道发生了什么?
答案 0 :(得分:6)
您似乎处于全局范围内,因此当您声明name
变量时,您将与全局window.name
属性发生冲突。
此属性具有为字符串,因此每当您为其指定任何内容时,它都会被强制转换为字符串。
当["one",'two','three']
被强制转换为字符串时,它会首先执行Array.join
,最后会得到"one,two,three"
,并将其分配给name
。 name[0]
为您提供了"o"
的第一个字符。
使用不同的变量名称person
,您不会看到此问题,因为您没有对抗窗口属性。