成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

詳解加法運算符

劉永祥 / 1209人閱讀

摘要:數(shù)字加轉(zhuǎn)為,再做加法運算。在這里,被解析成一個空的因此實際上解析成這樣就是把一個空數(shù)組轉(zhuǎn)換成數(shù)值,調(diào)用之后還是自身,因此調(diào)用得到一個空字符串,轉(zhuǎn)換成數(shù)字。參考詳解的加法運算符中和的返回值情況是怎樣的

JavaScript 里面不同的類型做加法之前,需要做各種轉(zhuǎn)換,這里做一個比較完善的總結(jié)。

基本轉(zhuǎn)換規(guī)則

運算雙方存在對象時

如果有一個對象,那么先把它轉(zhuǎn)換成基本類型值

轉(zhuǎn)換之后,如果有字符串,另一個值先轉(zhuǎn)換成字符串,然后再做連接操作

如果沒有,把二者轉(zhuǎn)換成數(shù)字再相加

如果二者都是基本類型值,先檢查是否有字符串類型,如果有就做連接操作;如果沒有,就把二者轉(zhuǎn)換成數(shù)字相加。

對象轉(zhuǎn)換成基本類型值

如果是 Date 對象,那么用toString()

其它情況下,用valueOf()

其他情況下(valueOf()不存在或者不返回基本類型值),那么用toString()

舉例 數(shù)字加字符串
var result = 1 + "5" // 15

二者都是基本類型值,且有字符串,因此做連接操作。

數(shù)字加數(shù)組
var result = [1, 3, 5] + 1 // "1, 3, 51"

數(shù)組是引用類型,先用valueOf()進行轉(zhuǎn)換,但是數(shù)組的valueOf()的結(jié)果還是原來的數(shù)組,所以用toString()方法得到一個字符串"1, 3, 5";然后是一個字符串加一個數(shù)字,做連接操作。

數(shù)字加 boolean
var result = 10 + true // 11

二者都是基本類型值,且沒有字符串,所以把true轉(zhuǎn)換成數(shù)字相加。

數(shù)字加對象
var result = 15 + {} // "15[object Object]"

首先對對象做轉(zhuǎn)換,對象的valueOf還是自身,所以用toString()來轉(zhuǎn)換,{}.toString()的結(jié)果是"[object Object]",所以最后的結(jié)果就是"15[object Object]"。

數(shù)字加 null
var result = 8 + null // 8

null 轉(zhuǎn)為0,再做加法運算。

字符串加 null
var result = "queen" + null // "queennull"
數(shù)字加 undefined
var result = 12 + undefined // NaN

undefined轉(zhuǎn)換成數(shù)字,得到NaN,因此加法的結(jié)果就是NaN。

[] + {}
var result = [] + {} // "[object Object]"

二者都是對象,而且二者的valueOf方法的結(jié)果都是自身,所以要調(diào)用toString方法??諗?shù)組調(diào)用的結(jié)果是個空字符串,空對象調(diào)用的結(jié)果是"[object Object]", 字符串連接之后的結(jié)果就是"[object Object]"。

{} + []
var result = {} + [] // 0

在這里,{}被解析成一個空的 block,因此實際上解析成這樣:

{ // empty block }
+ []

就是把一個空數(shù)組轉(zhuǎn)換成數(shù)值,調(diào)用valueOf之后還是自身,因此調(diào)用toString, 得到一個空字符串,轉(zhuǎn)換成數(shù)字0。

參考:

詳解 JavaScript 的加法運算符

JS中{}+[]和[]+{}的返回值情況是怎樣的

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/79482.html

相關(guān)文章

  • 溫故js系列(17)-詳解加法算符

    摘要:數(shù)字和解釋因為沒有任何一個操作數(shù)是字符串,將轉(zhuǎn)換為一個數(shù)字做數(shù)字加法運算因為沒有操作數(shù)是對象或字符串,將轉(zhuǎn)換為。結(jié)論以避免潛在的問題,不使用加法運算符處理對象,除非你清楚地使用或方法。 前端學習:教程&模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試資源匯總 JavaScript一路走來,備受爭議,與其說它備受爭議,不如說它不夠完美。不夠完美?那完美了還得了,它的...

    gxyz 評論0 收藏0
  • JavaScript 算符規(guī)則與隱式類型轉(zhuǎn)換詳解

    摘要:我們再來回顧下文首提出的這個比較運算,首先為對象,則調(diào)用函數(shù)將其轉(zhuǎn)化為字符串對于右側(cè)的,首先會進行顯式類型轉(zhuǎn)換,將其轉(zhuǎn)化為。 JavaScript 運算符規(guī)則與隱式類型轉(zhuǎn)換詳解 從屬于筆者的現(xiàn)代 JavaScript 開發(fā):語法基礎(chǔ)與工程實踐系列文章,主要探討 JavaScript 中令人迷惑的加減乘除與比較等常見運算中的規(guī)則與隱式類型轉(zhuǎn)換;本文中涉及的參考資料全部聲明在了JavaSc...

    snifes 評論0 收藏0
  • JavaScript 算符規(guī)則與隱式類型轉(zhuǎn)換詳解

    摘要:我們再來回顧下文首提出的這個比較運算,首先為對象,則調(diào)用函數(shù)將其轉(zhuǎn)化為字符串對于右側(cè)的,首先會進行顯式類型轉(zhuǎn)換,將其轉(zhuǎn)化為。 JavaScript 運算符規(guī)則與隱式類型轉(zhuǎn)換詳解 從屬于筆者的現(xiàn)代 JavaScript 開發(fā):語法基礎(chǔ)與工程實踐系列文章,主要探討 JavaScript 中令人迷惑的加減乘除與比較等常見運算中的規(guī)則與隱式類型轉(zhuǎn)換;本文中涉及的參考資料全部聲明在了JavaSc...

    Kyxy 評論0 收藏0
  • javascript變量算符詳解

    摘要:代碼示例等號檢查,類型轉(zhuǎn)換后返回全等檢查,由于時類型,時類型,類型不同,返回關(guān)系運算符關(guān)系運算符執(zhí)行的是比較運算,通常用于判斷兩個變量哪個大哪個小關(guān)系運算符都返回一個布爾值。邏輯或運輸符用雙豎線表示。 1.運算符 JavaScript中常見的運算符包含:賦值運算符、算數(shù)運算符、等性運算符、關(guān)系運算符、條件運算符、布爾運算符、邏輯運算符…… 1.賦值運算符 = 賦值運算符=,用于給某個變...

    Sourcelink 評論0 收藏0
  • 詳解js算符

    摘要:對象返回第二個操作數(shù)對象對象邏輯或與邏輯與操作相似,如果有一個操作數(shù)不是布爾值,邏輯或也不一定返回布爾值此時,它遵循下列規(guī)則如果第一個操作數(shù)是對象,則返回第一個操作數(shù)。無論這個值是什么數(shù)據(jù)類型,這個運算符都會返回一個布爾值。 加法運算符 如果算術(shù)運算的值不是數(shù)值,那么js后臺會先使用Number()轉(zhuǎn)型函數(shù)將其轉(zhuǎn)換為數(shù)值: var num = 1 + NaN;//NaN,只要有一個Na...

    Dean 評論0 收藏0

發(fā)表評論

0條評論

劉永祥

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<