首頁  >  文章  >  web前端  >  JavaScript中「」的陷阱深刻理解_javascript技巧

JavaScript中「」的陷阱深刻理解_javascript技巧

WBOY
WBOY原創
2016-05-16 17:47:221083瀏覽
一、兩個中括號相加
[] []
中括號沒有語句區塊的作用,因此這裡的兩個中括號就是一個陣列。兩個陣列(物件類型)相加先要將其轉換成值類型(基本型別(基本型別)。
1,轉成值型別呼叫valueOf,[]的valueOf()還是自己
複製程式碼 程式碼如下:

var arr = [];
arr.valueOf() === arr; // true

2,轉成字串,[]的toString是空字串
複製程式碼 程式碼如下:

[].toString(); / / ""
String([]) // ""

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

二、大括號和中括號的相加
複製程式碼


複製程式碼

複製程式碼複製碼:
{} []

注意這裡的大括號仍然不是物件直接量,而是空語句區塊。因此可以去除它,即相當於


複製程式碼 程式碼如下:
[ >

注意,這時由之前看似的兩個運算數變成了實際的單運算數。而「 」運算子當只有一個運算數時才代表一個意思:算術加運算。即這裡沒有字串連接的意思了。
中括號的toString()是空字串,又相當於




複製程式碼
程式碼如下:
"" 「 」代表算術加運算,字串非數字,因此將其轉換成數字類型。空字串轉成數字類型在上一篇提到過,為0。 那麼最後的結果就是0。

三、中括號和大括號相加



複製程式碼複製程式碼
複製程式碼


複製程式碼

複製程式碼
複製程式碼複製程式碼 [] {} 與上面的對比,只是中括號和小括號交換了順序。結果卻不相同。大括號放到右邊後,與上面討論的大括號的意義不同了。這裡的大括號就是一個物件直接量而非語句塊。 “ ” 兩邊的運算數轉成值型別分別是:"" 和 "[object Object]"。這時 " " 表示字串連線。即複製程式碼 程式碼如下: "" "[object Object]" 結果是「[object Object]」。 四、小括號也跟它們相加試試 突發奇想!好吧,小括號雖然有多義性,但它不能當作運算數。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn