日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

html中隐式转换成数字,关于 JS 类型隐式转换的完整总结

發布時間:2025/3/15 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html中隐式转换成数字,关于 JS 类型隐式转换的完整总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:原罪

來源:SegmentFault 思否社區

不管是在技術聊天群還是論壇里,總能碰到 x + y 等于多少的問題,比如 ,如果你不了解其中的原理,那么就插不上話,只能眼睜睜地等大佬解答了。

Type

說到底還是JS類型轉換的問題,首先我們先溫習一下JS的7種內置類型:

Number

String

Boolean

Null

Undefined

Object

Symbol

是不是感覺還有Function,畢竟能用typeof獲取到?不,函數、數組都是Object的子類型。

類型分為和兩種,除了對象,其它都是基本類型。

To Primitive

發音:[ pr m t v]

結構:toPrimitive(input, preferedType = number)

在對象的隱式轉換中,對象需要先轉成基本類型,并按照如下順序執行。

對象會先調用。

如果沒有valueOf這個方法或者valueOf返回的類型不是基本類型,那么對象會繼續調用方法。

如果沒有toString這個方法或者toString返回的類型不是基本類型,那么直接拋出異常。

接著,我們看下各個對象的轉換實現

ate的默認preferedType=string,即在加法運算中先執行toString()。在 - | * | / | +x | -x 等運算中,先執行valueOf()數組的toString()可以等效為

其中,數組toString()時,遇到null, undefined都被忽略,遇到symbol直接報錯,遇到沒有toString()的對象也報錯。

To Number

一些特殊值轉為數字的例子,等下要用到

加減法 +-

加減法運算中遵循了一些隱式轉換規則:

遇到對象先執行ToPrimitive轉換為基本類型,然后按照基本類型的規則處理

加法過程中,遇到字符串,則會被處理為

上面的對象最后也都轉成了字符串,遵循本條規則。接著來幾個純字符串的例子

減法操作時,一律需要把類型轉換為Number,進行數學運算

加法操作時,遇到非字符串的基本類型,都會轉Number

+ x 和 一元運算 +x 是等效的(以及- x),都會強制轉換成Number

回到一開始拋出的問題,這樣太簡單了吧?

對象字面量{}在最前面則不代表對象

不是對象是什么?是你的八塊腹肌?別急,看看經典的例子

這啥玩意?說好的"[object Object]"呢?

好吧,這是其實代表的是代碼塊,最后就變成了,根據前面的原則,數組先被轉換成字符串,接著因為+x的運算,字符串被轉成數字。

那 { a: 2 } 總該是對象了吧?其實這時候不是代表對象屬性,而是被當成了標簽(label),標簽這東西IE6就已經有了。所以如果我們寫成 這樣是會報錯的,逗號要改成分號才能通過編譯。

symbol不能加減

如果在表達式中有symbol類型,那么就會直接報錯。比如報錯如下:

寬松相等 ==

相等于全等都需要對類型進行判斷,當類型不一致時,寬松相等會觸發隱式轉換。下面介紹規則:

對象與對象類型一致,不做轉換

對象與基本類型,對象先執行ToPrimitive轉換為基本類型

數字與字符串類型對比時,字符串總是轉換成數字

布爾值先轉換成數字,再按數字規則操作

null、undefined、symbol

null、undefined與任何非自身的值對比結果都是false,但是 是一個特例。

對比

對比不像相等,可以嚴格相等(===)防止類型轉換,對比一定會存在隱式類型轉換。

對象總是先執行ToPrimitive為基本類型

任何一邊出現非字符串的值,則一律轉換成數字做對比

總結

以上是生活随笔為你收集整理的html中隐式转换成数字,关于 JS 类型隐式转换的完整总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。