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