JS - ES2015/ES6新特性详解6(二进制和八进制、尾调用、其他新增的API)
相关文章系列:
JS - ES2015/ES6新特性详解1(let、const、For..of循环、迭代器、生成器)
JS - ES2015/ES6新特性详解2(Set, WeakSet, Map, WeakMap、箭头函数)
JS - ES2015/ES6新特性详解3(默认参数、不定参数、扩展运算符、解构)
JS - ES2015/ES6新特性详解4(类、模块、Promises、模板字符串)
JS - ES2015/ES6新特性详解5(代理、反射、Symbols、Unicode编码)
[当前文章] JS - ES2015/ES6新特性详解6(二进制和八进制、尾调用、其他新增的API)
JS - ES2015/ES6新特性详解1(let、const、For..of循环、迭代器、生成器)
JS - ES2015/ES6新特性详解2(Set, WeakSet, Map, WeakMap、箭头函数)
JS - ES2015/ES6新特性详解3(默认参数、不定参数、扩展运算符、解构)
JS - ES2015/ES6新特性详解4(类、模块、Promises、模板字符串)
JS - ES2015/ES6新特性详解5(代理、反射、Symbols、Unicode编码)
[当前文章] JS - ES2015/ES6新特性详解6(二进制和八进制、尾调用、其他新增的API)
十九、二进制和八进制字面量
1,之前我们可以使用十六进制数字的字面量
console.log(0xff); // 255
2,ES6 又新增了二进制和八进制数字的字面量。
console.log(0b11111) //31 console.log(0o2342) //1250
二十、Tail Call(尾调用优化)
尾调用的概念非常简单,一句话就能说清楚,就是指某个函数的最后一步是调用另一个函数。ES6 可以确保尾调用不会造成堆栈溢出。 (不是所有的实现工作)。
(1)下面是一个简单的样例
(2)运行结果如下:
function factorial(n, acc = 1) { if (n <= 1) return acc; return factorial(n - 1, n * acc); } console.log(factorial(10)) console.log(factorial(100)) console.log(factorial(1000)) console.log(factorial(10000)) console.log(factorial(100000))
(2)运行结果如下:
二十一、Math、Number、String、Object等增加了新的API方法和常量
(1)下面是一些使用样例
console.log("---- Number ----"); console.log(Number.EPSILON); console.log(Number.isInteger(Infinity)); console.log(Number.isNaN("NaN")); console.log("---- Math ----"); console.log(Math.acosh(3)); console.log(Math.hypot(3, 4)); console.log(Math.imul(Math.pow(2, 32) - 1, Math.pow(2, 32) - 2)); console.log("---- String ----"); console.log("abcde".includes("cd") ); console.log("abc".repeat(3) ); console.log("---- Array ----"); console.log(Array.of(1, 2, 3) ); console.log([0, 0, 0].fill(7, 1) ); console.log([1, 2, 3].find(x => x == 3) ); console.log([1, 2, 3].findIndex(x => x == 2)); console.log([1, 2, 3, 4, 5].copyWithin(3, 0)); for (let [index, elem] of ['a', 'b'].entries()) { console.log(index, elem); } for (let index of ['a', 'b'].keys()) { console.log(index); } for (let elem of ['a', 'b'].values()) { console.log(elem); } console.log("---- Object ----"); console.log(Object.assign({}, {origin: "hangge.com"}));
(2)运行结果如下: