數(shù)字類型、Number和new Number的區(qū)別
? ? ? ?不難看出三種類型都和數(shù)字相關(guān),但是都有各自存在的意義,而且在實際前端開發(fā)中都比較常用。例如字符串類型數(shù)字轉(zhuǎn)化為Number類型,方便計算價格等等。接下來做個全面講解,結(jié)合源碼和貼近開發(fā)案例。
1、 數(shù)字類型: let num1 = 100,在js中表示聲明一個數(shù)字類型變量,實質(zhì)上也是把數(shù)字轉(zhuǎn)化成Numer對象,所以可以調(diào)用toString()方法,可以用來參與加減乘除的數(shù)學計算,例如num1 *1=100,num1+1=101,num1-1=99,num1 /1=100;
2、Number類型:用于將后端接口返回的字符串轉(zhuǎn)化成數(shù)字類型,和定義數(shù)字變量全等關(guān)系,比如價格 let num2 = '100',除了顯示在頁面,還可以轉(zhuǎn)化成數(shù)字類型 const num3 = Number(num2?),還能保留有效小數(shù)位,比如const num3 = Number(num2?).toFixed(2),輸出結(jié)果 100.00;
3、new Number類型:new Number(100),是把數(shù)字字符串或者數(shù)字類型轉(zhuǎn)化成Number對象,因為js的new Number()后的對象用于原型鏈(toString)自帶方法,比如toString()、valueOf()和toLocaleString()等等,詳情看下圖;

比較三者:


總結(jié):
????????從實際結(jié)果不難看出,num1和num2是數(shù)字類型,num3是對象,Number 和數(shù)字類型全等,二者和new Number結(jié)果不全等。值得關(guān)注的是,一個原始類型值并沒有任何可用的方法,其使用的方法是包裝對象原型上的,例如:(12).toFixed(),toFixed()實際上是在Number對象原型(prototype)中聲明的方法。
????????理解有誤的地方,大家評論區(qū)安排建議哈,謝謝!