DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JavaScript中“+”的陷阱深刻理解
JavaScript中“+”的陷阱深刻理解
編輯:關於JavaScript     
一、兩個中括號相加
[] + []
中括號沒有語句塊的作用,因此這裡的兩個中括號就是一個數組。兩個數組(對象類型)相加先要將其轉換成值類型(基本類型)。
1,轉成值類型調用valueOf,[]的valueOf()還是自己
復制代碼 代碼如下:
var arr = [];
arr.valueOf() === arr; // true

2,轉成字符串,[]的toString是空字符串
復制代碼 代碼如下:
[].toString(); // ""
String([]) // ""

結果出來了。兩個空字符串相加,結果仍然是空字符串。即這裡的“+”指字符串連接而非數字相加。

二、大括號和中括號的相加
復制代碼 代碼如下:
{} + []

注意這裡的大括號仍然不是對象直接量,而是空語句塊。因此可以去掉它,即相當於
復制代碼 代碼如下:
+ []

注意,這時由之前看似的兩個運算數變成了實際的單運算數。而“+”運算符當只有一個運算數時只代表一個意思:算術加運算。即這裡沒有字符串連接的意思了。
中括號的toString()是空字符串,又相當於
復制代碼 代碼如下:
+ ""

“+”代表算術加運算,字符串非數字,因此將其轉換成數字類型。空字符串轉成數字類型在上一篇提到過,為0。
那麼最後的結果就是0。

三、中括號和大括號相加
復制代碼 代碼如下:
[] + {}

與上面的對比,只是中括號和小括號交換了順序。結果卻不相同。大括號放到右邊後,與上面討論的大括號的意義不同了。這裡的大括號就是一個對象直接量而非語句塊。
“+” 兩邊的運算數轉成值類型分別是:"" 和 "[object Object]"。這時 "+" 表示字符串連接。即
復制代碼 代碼如下:
"" + "[object Object]"

結果是 “[object Object]”。

四、小括號也和它們相加試試
突發奇想!好吧,小括號雖然有多義性,但它不能作為運算數。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved