摘要:數字加轉為,再做加法運算。在這里,被解析成一個空的因此實際上解析成這樣就是把一個空數組轉換成數值,調用之后還是自身,因此調用得到一個空字符串,轉換成數字。參考詳解的加法運算符中和的返回值情況是怎樣的
JavaScript 里面不同的類型做加法之前,需要做各種轉換,這里做一個比較完善的總結。
基本轉換規則
運算雙方存在對象時
如果有一個對象,那么先把它轉換成基本類型值
轉換之后,如果有字符串,另一個值先轉換成字符串,然后再做連接操作
如果沒有,把二者轉換成數字再相加
如果二者都是基本類型值,先檢查是否有字符串類型,如果有就做連接操作;如果沒有,就把二者轉換成數字相加。
對象轉換成基本類型值如果是 Date 對象,那么用toString()
其它情況下,用valueOf()
其他情況下(valueOf()不存在或者不返回基本類型值),那么用toString()
舉例 數字加字符串var result = 1 + "5" // 15
二者都是基本類型值,且有字符串,因此做連接操作。
數字加數組var result = [1, 3, 5] + 1 // "1, 3, 51"
數組是引用類型,先用valueOf()進行轉換,但是數組的valueOf()的結果還是原來的數組,所以用toString()方法得到一個字符串"1, 3, 5";然后是一個字符串加一個數字,做連接操作。
數字加 booleanvar result = 10 + true // 11
二者都是基本類型值,且沒有字符串,所以把true轉換成數字相加。
數字加對象var result = 15 + {} // "15[object Object]"
首先對對象做轉換,對象的valueOf還是自身,所以用toString()來轉換,{}.toString()的結果是"[object Object]",所以最后的結果就是"15[object Object]"。
數字加 nullvar result = 8 + null // 8
null 轉為0,再做加法運算。
字符串加 nullvar result = "queen" + null // "queennull"數字加 undefined
var result = 12 + undefined // NaN
把undefined轉換成數字,得到NaN,因此加法的結果就是NaN。
[] + {}var result = [] + {} // "[object Object]"
二者都是對象,而且二者的valueOf方法的結果都是自身,所以要調用toString方法。空數組調用的結果是個空字符串,空對象調用的結果是"[object Object]", 字符串連接之后的結果就是"[object Object]"。
{} + []var result = {} + [] // 0
在這里,{}被解析成一個空的 block,因此實際上解析成這樣:
{ // empty block } + []
就是把一個空數組轉換成數值,調用valueOf之后還是自身,因此調用toString, 得到一個空字符串,轉換成數字0。
參考:
詳解 JavaScript 的加法運算符
JS中{}+[]和[]+{}的返回值情況是怎樣的
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/79482.html
摘要:數字和解釋因為沒有任何一個操作數是字符串,將轉換為一個數字做數字加法運算因為沒有操作數是對象或字符串,將轉換為。結論以避免潛在的問題,不使用加法運算符處理對象,除非你清楚地使用或方法。 前端學習:教程&模塊化/規范化/工程化/優化&工具/調試&值得關注的博客/Git&面試資源匯總 JavaScript一路走來,備受爭議,與其說它備受爭議,不如說它不夠完美。不夠完美?那完美了還得了,它的...
摘要:我們再來回顧下文首提出的這個比較運算,首先為對象,則調用函數將其轉化為字符串對于右側的,首先會進行顯式類型轉換,將其轉化為。 JavaScript 運算符規則與隱式類型轉換詳解 從屬于筆者的現代 JavaScript 開發:語法基礎與工程實踐系列文章,主要探討 JavaScript 中令人迷惑的加減乘除與比較等常見運算中的規則與隱式類型轉換;本文中涉及的參考資料全部聲明在了JavaSc...
摘要:我們再來回顧下文首提出的這個比較運算,首先為對象,則調用函數將其轉化為字符串對于右側的,首先會進行顯式類型轉換,將其轉化為。 JavaScript 運算符規則與隱式類型轉換詳解 從屬于筆者的現代 JavaScript 開發:語法基礎與工程實踐系列文章,主要探討 JavaScript 中令人迷惑的加減乘除與比較等常見運算中的規則與隱式類型轉換;本文中涉及的參考資料全部聲明在了JavaSc...
摘要:代碼示例等號檢查,類型轉換后返回全等檢查,由于時類型,時類型,類型不同,返回關系運算符關系運算符執行的是比較運算,通常用于判斷兩個變量哪個大哪個小關系運算符都返回一個布爾值。邏輯或運輸符用雙豎線表示。 1.運算符 JavaScript中常見的運算符包含:賦值運算符、算數運算符、等性運算符、關系運算符、條件運算符、布爾運算符、邏輯運算符…… 1.賦值運算符 = 賦值運算符=,用于給某個變...
閱讀 1329·2021-11-15 11:37
閱讀 2213·2021-09-23 11:21
閱讀 1299·2019-08-30 15:55
閱讀 2105·2019-08-30 15:55
閱讀 2815·2019-08-30 15:52
閱讀 2818·2019-08-30 11:12
閱讀 1572·2019-08-29 18:45
閱讀 1885·2019-08-29 14:04