什么是变量';名称';javascript?

什么是变量';名称';javascript?,javascript,Javascript,比如说, var name = [1,2,3] // name === "1,2,3" name = {"a":"b"} // name === "[object Object]" 我不理解这种情况 javascript上“name”或“window.name”的标识是什么 加: 当您声明时,我使用了Chrome的开发工具 name = {"a":"b"} 您正在创建一个对象,对象的字符串表示形式是[object object],也就是说,当您尝试将一个对象转换为字符串(这里可能就是这种

比如说,

var name = [1,2,3]  // name === "1,2,3"
name = {"a":"b"}  // name === "[object Object]"
我不理解这种情况

javascript上“name”或“window.name”的标识是什么

加:

当您声明时,我使用了Chrome的开发工具

name = {"a":"b"}
您正在创建一个对象,对象的字符串表示形式是
[object object]
,也就是说,当您尝试将一个对象转换为字符串(这里可能就是这种情况)时,您会得到该结果

请注意,
name==“[object object]”
不是真的

数组也是如此
1,2,3
只是数组
[1,2,3]
的字符串表示形式



对于
window.name
,它具有当前窗口的名称,因此将其更改为非字符串可能会导致意外行为:

请查看和。这些值是从哪里获得的?Firefox的本机控制台?警报?如果您使用Chrome的开发工具或Firebug,它将显示对象的属性,并给出数组的正确表示。但它与另一个变量不同。@Ephemera“不同”和“另一个变量”是什么意思?如果您使用另一个变量,例如不使用“name”,那么它是正常的。(变量a=[1,2,3]//a!==“1,2,3”,a===[1,2,3])字符串表示法。。您还可以添加,OP显示这些“值”的任何方式都会强制将它们转换为字符串。您可能希望声明
typeof name
用于类型检查,而不是使用
name.toString()
来避免confusion@AlvinWong我考虑过,但在这种情况下可能会让人困惑,因为
typeof[1,2,3]='object'
@Ephemera它到底有什么奇怪之处?@Ephemera因为
window.name
应该是字符串。某些引擎可能会自动将其转换为字符串。
alert( name === "[object Object]" );             // alerts "false"
alert( name.toString() === "[object Object]" );  // alerts "true"