空數組空數組:空值串聯
當新增兩個空數組時,JavaScript 首先將它們轉換為基元。在這種情況下,陣列的預設值為空字串,因此結果是兩個空字串的串聯:一個空字串。
空數組物件:物件清理
將空數組轉換為基元(空字串)並將物件轉換為基元(其字串表示形式, “[object Object]”)會產生空字串和物件表示的串聯,產生“[object Object]。而不是0。出現這種差異是因為解釋了空塊 {}作為塊語句,其計算結果為空。一元運算子將空值轉換為數字,結果為 0。但是,由於您在函數參數中使用它,因此該語句被迫解釋為表達式語句。這會導致 {} 被解析為空物件文字而不是空塊,從而導致 [Object]。
Object 物件:不匹配的輸出
結果{} {} 的值應該是“object Object”,但 JSFiddle 顯示了不同的結果。這種差異可能是由於 JavaScript 的特定於實現的行為所致,其中將兩個物件添加到字串的結果可能會有所不同。
Array(16).join("wat" - 1): NaN Propagation
此表達式的輸入字串是“NaN-1”,其計算結果為NaN。當 JavaScript 嘗試將「NaN」與陣列的空字串元素連接時,根據連接演算法,結果始終為 NaN。
「wat」 1 與「wat」 - 1:字串與. 數字轉換
在「wat」1 中,JavaScript 將1 轉換為字串,結果為“wat1”。另一方面,在“wat”- 1 中,它嘗試將“wat”轉換為數字,這會導致 NaN。由於串聯運算子需要一個字串作為其第一個參數,因此 NaN 會轉換回字串,從而導致「NaN」重複。
以上是為什麼 JavaScript 在字串和數字連接和算術中產生意外結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!