筆記法褥,完全摘錄自阮一峰
1.
擴(kuò)展Number內(nèi)置對象上的方法
- 擴(kuò)展方法
原全局方法子檀,現(xiàn)掛載到Number對象爷怀,避免給全局對象暴露過多接口
Number.isFinite()
麦牺,Number.isNaN()
Number.isFinite(num)
檢測數(shù)值是否為無限
Number.isNaN(num)
檢測參數(shù)是否為NaN
與全局方法的區(qū)別
全局方法的處理方法是稀并,先對參數(shù)調(diào)用Number()
方法,轉(zhuǎn)換為數(shù)值碟绑,再判斷
新方法俺猿,Number.isFinite()
對于非數(shù)值一律返回false
,Number.isNaN()
只對于NaN
返回true
蜈敢,非NaN
一律返回false
-
Number.parseInt()
辜荠,Number.parsefloat()
原方法移植到Number對象上。
Number.isInteger()
判斷一個數(shù)抓狭,是否為整數(shù)伯病。
由于JavaScript整數(shù),浮點數(shù)統(tǒng)一的存儲方法,所以3
和3.0
被視為同一個值午笛。Number.EPSILON
新增的一個極小常量惭蟋,由于浮點數(shù)計算精度問題,導(dǎo)致計算不準(zhǔn)確药磺。
當(dāng)計算誤差小于這個常量Number.EPSILON
時候嗎告组,我們可以認(rèn)為,得到了正確結(jié)果癌佩。Number.isSafeInterger()
JavaScript的安全數(shù)范圍是-2^53
到2^53
(不含端點)木缝。
ES6引入Number.MAX_SAFE_INTEGER
和Number.MIN_SAFE_INTEGER
來表示上下限。
Number.isSafeInterger()
來檢測數(shù)值是否處于安全范圍围辙。
2.
Math對象的擴(kuò)展
新增了17
個方法
Math.trunc()
取一個數(shù)的整數(shù)部分我碟。
非數(shù)值,調(diào)用Number()
方法姚建。
無法取值或空值矫俺,返回NaN
Math.sign()
來判斷一個數(shù)到底是正數(shù)、負(fù)數(shù)掸冤、還是零厘托。參數(shù)為正數(shù),返回+1稿湿;
參數(shù)為負(fù)數(shù)铅匹,返回-1;
參數(shù)為0缎罢,返回0伊群;
參數(shù)為-0考杉,返回-0;
其他值策精,返回NaN。
Math.cbrt()
計算一個數(shù)的立方根
非數(shù)值調(diào)用Number()
Math.clz32()
JavaScript整數(shù)也用32位二進(jìn)制表示崇棠,Math.clz32()
返回一個數(shù)的32位無符號整數(shù)形式有多少個前導(dǎo)0.
clz32
這個函數(shù)名就來自”count leading zero bits in 32-bit binary representations of a number“(計算32位整數(shù)的前導(dǎo)0)的縮寫咽袜。
對于小數(shù),該方法只考慮整數(shù)部分枕稀。
其他類型數(shù)询刹,Math.clz32
會先將其轉(zhuǎn)換數(shù)值。
Math.clz32() // 32
Math.clz32(NaN) // 32
Math.clz32(Infinity) // 32
Math.clz32(null) // 32
Math.clz32('foo') // 32
Math.clz32([]) // 32
Math.clz32({}) // 32
Math.clz32(true) // 31
-
Math.imul()
返回兩個數(shù)以32位帶符號整數(shù)形式相乘的結(jié)果萎坷,返回的也是一個32位的帶符號整數(shù)凹联。
用于解決過大數(shù)據(jù)(超過2的53次冪)相乘計算結(jié)果不正確的問題。
-
Math.fround()
返回一個數(shù)的單精度浮點數(shù)形式哆档。
對于整數(shù)來說蔽挠,Math.fround
方法返回結(jié)果不會有任何不同,區(qū)別主要是那些無法用64個二進(jìn)制位精確表示的小數(shù)瓜浸。這時澳淑,Math.fround
方法會返回最接近這個小數(shù)的單精度浮點數(shù)比原。
Math.hypot()
返回所有參數(shù)的平方和的平方根。
如果參數(shù)不是數(shù)值杠巡,Math.hypot
方法會將其轉(zhuǎn)為數(shù)值量窘。只要有一個參數(shù)無法轉(zhuǎn)為數(shù)值,就會返回NaN
氢拥。對數(shù)方法
Math.expm1()
返回e^x - 1蚌铜,即Math.exp(x) - 1
Math.log1p()
返回1 + x的自然對數(shù),即Math.log(1 + x)
嫩海。如果x小于-1厘线,返回NaN
Math.log10()
返回以10為底的x的對數(shù)。如果x小于0出革,則返回NaN造壮。Math.log2()
返回以2為底的x的對數(shù)。如果x小于0骂束,則返回NaN耳璧。三角函數(shù)方法
Math.sinh(x)
返回x的雙曲正弦(hyperbolic sine)Math.cosh(x)
返回x的雙曲余弦(hyperbolic cosine)Math.tanh(x)
返回x的雙曲正切(hyperbolic tangent)Math.asinh(x)
返回x的反雙曲正弦(inverse hyperbolic sine)Math.acosh(x)
返回x的反雙曲余弦(inverse hyperbolic cosine)Math.atanh(x)
返回x的反雙曲正切(inverse hyperbolic tangent)
好吧,感覺回到高數(shù)課堂了展箱,旨枯,,不過混驰,做圖會方便很多吧攀隔。
二進(jìn)制,八進(jìn)制表示法
ES6明確規(guī)定栖榨,
二進(jìn)制要用0b/0B
前綴
八進(jìn)制要用0o/0O
前綴