var name = [1,2,3] // name === "1,2,3"
name = {"a":"b"} // name === "[object Object]"
我不理解这种情况。
JavaScript上的'name'或'window.name'的标识是什么?
地址:
我使用Chrome的开发者工具
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]"
是而不是是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
字符串表示形式..你也可以添加,无论OP显示这些“值”的方式是强制它们被转换为字符串。 – 2012-07-21 10:57:35
您可能想声明'typeof name'用于类型检查,而不是使用'name.toString()'来避免混淆 – 2012-07-21 11:00:15
@AlvinWong我想过了,但是在这种情况下可能会引起混淆,因为'typeof [1,2,3] ==='object''。 – JJJ 2012-07-21 11:02:34
请看看[这里](https://开头developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/)和[this](http://www.json.org/js.html)。 – Adi 2012-07-21 10:48:48
从**哪里得到这些值? Firefox的本地控制台?警报?如果您使用Chrome的开发工具或Firebug,它将显示对象的属性,并给出数组的适当表示。 – 2012-07-21 10:53:20
我使用了Chrome的开发工具。但它与另一个变量不同。 – Ephemera 2012-07-21 11:05:47