首頁 >web前端 >js教程 >為什麼 JavaScript 在這些奇怪的算術運算中會產生意想不到的結果?

為什麼 JavaScript 在這些奇怪的算術運算中會產生意想不到的結果?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-24 18:19:14624瀏覽

Why Does JavaScript Produce Unexpected Results in These Strange Arithmetic Operations?

「Wat」演講中令人費解的JavaScript 行為

CodeMash 2012 的「Wat」演講強調了JavaScript 中的一些特殊行為,它是值得探索它們以了解背後發生的事情

[] []
與空數組一起使用的加法運算子 ( ) 將運算元轉換為基元並將它們連接起來。由於數組的預設原始值為空字串,因此 [] [] 的結果也是空字串。

[] {}
JavaScript 中的物件有一個 toString()呼叫時傳回「[object Object]」的方法。因此,[] {} 會產生一個對象,特別是字串「[object Object]」。

{} []
在語句中使用時,{} 會被解析為一個空塊,因此傳回未定義。這個運算子將未定義的運算元強制轉換為數字,導致 {} [] 為 0(而「Wat」談話提到它應該為 NaN)。

{} {}
類似到 {}[] 時,第一個 {} 被解析為空塊,導致未定義。但是,該運算子無法將字串「[object Object]」(第二個{} 的toString() 值)強制轉換為數字,從而導致NaN.

Array(16). join ("wat" - 1)
ToNumber() 將"wat" - 1 轉換為NaN,因為從字串中減去數字會得到非數字 價值。 ToPrimitive() 然後將 NaN 轉換為字串“NaN”,在連接陣列元素時重複 16 次。

結論
這些看似奇怪的行為源自於 JavaScript 的原始轉換規則以及與陣列和物件相關的特定方法。透過了解這些底層機制,您可以避免意外結果並充分利用 JavaScript 的強大功能。

以上是為什麼 JavaScript 在這些奇怪的算術運算中會產生意想不到的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn