2012-07-21 100 views
1

例如,什么是javascript的变量“名称”?

var name = [1,2,3] // name === "1,2,3" 
name = {"a":"b"} // name === "[object Object]" 

我不理解这种情况。

JavaScript上的'name'或'window.name'的标识是什么?

地址:

我使用Chrome的开发者工具

+0

请看看[这里](https://开头developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/)和[this](http://www.json.org/js.html)。 – Adi 2012-07-21 10:48:48

+1

从**哪里得到这些值? Firefox的本地控制台?警报?如果您使用Chrome的开发工具或Firebug,它将显示对象的属性,并给出数组的适当表示。 – 2012-07-21 10:53:20

+0

我使用了Chrome的开发工具。但它与另一个变量不同。 – Ephemera 2012-07-21 11:05:47

回答

2

当你声明

name = {"a":"b"} 

你创建了一个对象和对象的字符串表示[object Object],那就是,当你尝试将一个对象转换为一个字符串(这可能是这种情况),你会得到这个结果。

请注意,name === "[object Object]"而不是是true。

alert(name === "[object Object]");    // alerts "false" 
alert(name.toString() === "[object Object]"); // alerts "true" 

这同样适用于阵列。 1,2,3只是数组[1,2,3]的字符串表示形式。


至于window.name,它具有当前窗口的名称,以便将其更改为一个非字符串可能会导致意外的行为:https://developer.mozilla.org/en/DOM/window.name

+0

字符串表示形式..你也可以添加,无论OP显示这些“值”的方式是强制它们被转换为字符串。 – 2012-07-21 10:57:35

+0

您可能想声明'typeof name'用于类型检查,而不是使用'name.toString()'来避免混淆 – 2012-07-21 11:00:15

+0

@AlvinWong我想过了,但是在这种情况下可能会引起混淆,因为'typeof [1,2,3] ==='object''。 – JJJ 2012-07-21 11:02:34