1伶氢、二進(jìn)制和八進(jìn)制表示方法
二進(jìn)制:以 0b 或 0B 表示;
console.log(Number(0b111101)); // 61
console.log(Number("0b111101")); // 61
console.log(0b111101 === 61); // true
八進(jìn)制:在ES5 嚴(yán)格模式中激况,八進(jìn)制是不允許使用0 為前綴表示的虐杯,而在ES6 中,明確使用 0o 前綴表示的灯帮。
console.log(Number(0o567)); // 375
console.log(Number("0o567")); // 375
console.log(0o567=== 375); // true
2崖技、數(shù)值Number 方法擴(kuò)展
判斷值是否為有限值:isFinite();
Number.isFinite(18); // true
Number.isFinite('18'); // false
判斷值是否為NaN:isNaN();
Number.isNaN(NaN); // true
Number.isNaN('true' / 0); // true
Number.isNaN(13); // false
在ES6 中這兩個個方法與ES中的區(qū)別在于,傳統(tǒng)方法先調(diào)用Number() 將非數(shù)值轉(zhuǎn)為數(shù)值钟哥,在進(jìn)行判斷迎献,而新方法只對數(shù)值有效,對于非數(shù)值一律返回false腻贰。
ES6 將全局方法parseInt() 和 parseFloat() 移植到 Number 對象上面吁恍,行為完全不變。
Number.parseInt('12.23'); // 12
Number.parseFloat('23.44o'); // 23.44
判斷是否為整數(shù):isInteger();
Number.isInteger(12); // true
Number.isInteger(12.0); // true
Number.isInteger(12.2); // false
新增一個極小常量播演,判斷數(shù)值是否在某個誤差范圍內(nèi)冀瓦,是否精確:EPSILON,這個值為2-52写烤。
x = 0.2;
y = 0.3;
z = 0.1;
equal = (Math.abs(x - y + z) < Number.EPSILON);
console.log(equal); // true
判斷數(shù)值是否為安全整數(shù):isSafeInteger();
安全整數(shù)的范圍在:-(253 - 1)到 253 - 1 之間的整數(shù)翼闽,包含 -(253 - 1)和 253 - 1。
Number.isSafeInteger(3); // true
Number.isSafeInteger(Math.pow(2, 53)) // false
Number.isSafeInteger(Math.pow(2, 53) - 1) // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger("3"); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
3洲炊、Math 對象的擴(kuò)展
取數(shù)值的整數(shù)部分:Math.trunc();
Math.trunc(13.37) // 13
Math.trunc(42.84) // 42
Math.trunc(0.123) // 0
Math.trunc(-0.123) // -0
Math.trunc("-1.123") // -1
Math.trunc(NaN) // NaN
Math.trunc("foo") // NaN
Math.trunc() // NaN
判斷數(shù)值的類型:Math.sign();
有五種情況判斷感局, 若參數(shù)為非數(shù)值,會先轉(zhuǎn)換為數(shù)值暂衡。
(1)參數(shù)為正數(shù)询微,返回+1;
(2)參數(shù)為負(fù)數(shù)狂巢,返回-1拓提;
(3)參數(shù)為0,返回0隧膘;
(4)參數(shù)為-0代态; 返回0寺惫;
(5)參數(shù)為其他值,返回NaN蹦疑。
Math.sign(3); // 1
Math.sign(-3); // -1
Math.sign("-3"); // -1
Math.sign(0); // 0
Math.sign(-0); // -0
Math.sign(NaN); // NaN
Math.sign("foo"); // NaN
Math.sign(); // NaN
計(jì)算數(shù)值的立方根:Math.cbrt()西雀;
Math.cbrt(NaN); // NaN
Math.cbrt(-1); // -1
Math.cbrt(-0); // -0
Math.cbrt(-Infinity); // -Infinity
Math.cbrt(0); // 0
Math.cbrt(1); // 1
Math.cbrt(Infinity); // Infinity
Math.cbrt(null); // 0
Math.cbrt(2); // 1.2599210498948734
整數(shù)使用32位二進(jìn)制表示: Math.clz32()
Math.clz32(1) // 31
Math.clz32(1000) // 22
Math.clz32() // 32
[NaN, Infinity, -Infinity, 0, -0, null, undefined, "foo", {}, []].filter(function (n) {
return Math.clz32(n) !== 32
}) // []
Math.clz32(true) // 31
Math.clz32(3.5) // 30
32位整數(shù)乘法:Math.imul();
Math.imul(2, 4) // 8
Math.imul(2.5, 4) // 8
Math.imul(-1, 8) // -8
Math.imul(-2, -2) // 4
Math.imul(0xffffffff, 5) //-5
Math.imul(0xfffffffe, 5) //-10
將數(shù)值轉(zhuǎn)換為單精度浮點(diǎn)值: Math.fround()
Math.fround(0); // 0
Math.fround(1); // 1
Math.fround(1.337); // 1.3370000123977661
Math.fround(1.5); // 1.5
Math.fround(NaN); // NaN
求所有參數(shù)的平方和的平方根: Math.hypot();
Math.hypot(3, 4) // 5
Math.hypot(3, 4, 5) // 7.0710678118654755
Math.hypot() // 0
Math.hypot(NaN) // NaN
Math.hypot(3, 4, "foo") // NaN, +"foo" => NaN
Math.hypot(3, 4, "5") // 7.0710678118654755, +"5" => 5
Math.hypot(-3) // 3, the same as Math.abs(-3)
4、對數(shù)方法
Math.expm1() 函數(shù)返回 Ex - 1, 其中 x 是該函數(shù)的參數(shù), E 是自然對數(shù)的底數(shù)歉摧;
Math.expm1(1) // 1.7182818284590453
Math.expm1(-38) // -1
Math.expm1("-38") // -1
Math.expm1("foo") // NaN
Math.log1p() 函數(shù)返回一個數(shù)字加1后的自然對數(shù) (底為 E), 即log(x+1).
Math.log1p(Math.E-1) // 1
Math.log1p(0) // 0
Math.log1p("0") // 0
Math.log1p(-1) // -Infinity
Math.log1p(-2) // NaN
Math.log1p("foo") // NaN
Math.log10() 函數(shù)返回一個數(shù)字以 10 為底的對數(shù).
Math.log10(10) // 1
Math.log10(100) // 2
Math.log10("100")// 2
Math.log10(1) // 0
Math.log10(0) // -Infinity
Math.log10(-2) // NaN
Math.log10("foo")// NaN
Math.log2() 函數(shù)返回一個數(shù)字以 2 為底的對數(shù).
Math.log2(2) // 1
Math.log2(1024) // 10
Math.log2(1) // 0
Math.log2(0) // -Infinity
Math.log2(-2) // NaN
Math.log2("1024")// 10
Math.log2("foo") // NaN
5艇肴、指數(shù)運(yùn)算符:**
2 ** 4 // 16
3 ** 3 // 27
與等號結(jié)合: **=
let a = 4;
a **= 4;
console.log(a); // 256
等同于 a = aaa*a.
章節(jié)目錄
1、ES6中啥是塊級作用域叁温?運(yùn)用在哪些地方再悼?
2、ES6中使用解構(gòu)賦值能帶給我們什么膝但?
3冲九、ES6字符串?dāng)U展增加了哪些?
4跟束、ES6對正則做了哪些擴(kuò)展莺奸?
5、ES6數(shù)值多了哪些擴(kuò)展冀宴?
6灭贷、ES6函數(shù)擴(kuò)展(箭頭函數(shù))
7、ES6 數(shù)組給我們帶來哪些操作便利略贮?
8甚疟、ES6 對象擴(kuò)展
9、Symbol 數(shù)據(jù)類型在 ES6 中起什么作用逃延?
10览妖、Map 和 Set 兩數(shù)據(jù)結(jié)構(gòu)在ES6的作用
11、ES6 中的Proxy 和 Reflect 到底是什么鬼真友?
12黄痪、從 Promise 開始踏入異步操作之旅
13紧帕、ES6 迭代器(Iterator)和 for...of循環(huán)使用方法
14盔然、ES6 異步進(jìn)階第二步:Generator 函數(shù)
15、JavaScript 異步操作進(jìn)階第三步:async 函數(shù)
16是嗜、ES6 構(gòu)造函數(shù)語法糖:class 類