2012-07-21 33 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

相關問題