es7
- includes()
验证数组中是否存在某个元素,也能检测出数组中NaN
const a = [1, 2, 3, 4];
a.includes(1) // true;
[NaN, 1].includes(NaN) // true;
[NaN, 1].indexOf(NaN) // -1
- 使用指数运算符**
console.log(2**3) // 8;
es8
- Object.values()
返回一个由对象属性值组成的数组。
const obj = {
a: 1,
b: 2,
c: 3
};
Object
.values(obj)
.forEach(value => {
console.log(value);
});
// 1 2 3
- Object.entries()
如果 JavaScript 数据结构具有键和值,条目是一个键值对,被编码为2元数组。
const obj = {a: 1, b: 2, c: 3};
const temp = Object.entries(obj);
console.log(temp)
// [['a', 1], ['b': 2], ['c': 3]];
- padStart() && padEnd()
padStart()是在字符串前使用 fillString 填充,直到字符串长度为 maxLength;
padEnd() 的工作方式与 padStart() 类似,但不是在字符串开始的地方插入重复的 fillString ,而是将其插入到字符串结束的地方;
'x'.padStart(5, 'ab')
log:
'ababx'
'x'.padStart(4, 'ab')
log:
'abax'
'abcd'.padStart(2, '#') (如果接收字符串的长度大于等于 maxLength ,则返回原始字符串)
log:
'abcd'
'x'.padStart(3) (如果省略了 fillString ,则使用一个单独空格字符串(”)代替)
log:
' x'
'x'.padEnd(5, 'ab')
log:
'xabab'
'x'.padEnd(4, 'ab')
log:
'xaba'
'abcd'.padEnd(2, '#')
log:
'abcd'
'abc'.padEnd(10, '0123456789')
log:
'abc0123456'
'x'.padEnd(3)
log:
'x '
- 函数参数列表和调用中尾部的逗号不会再触发错误警告
eg:
function es8(var1, var2, var3,) {
// ...
}
- Object.getOwnPropertyDescriptors
返回指定对象所有自身属性(非继承属性)的描述对象。(相当于Object.getOwnPropertyDescriptor的复数形式)
const aa = {
a: 1,
b: 2
}
console.log(Object.getOwnPropertyDescriptors(aa));
log:
a: {value: 1, writable: true, enumerable: true, configurable: true}
b: {value: 2, writable: true, enumerable: true, configurable: true}