ES7(ES2016)新特性
ES7ES2016新特性发布时间2016年6月ES7 是最小的一个版本仅新增了2个特性。1. Array.prototype.includes()判断数组中是否包含指定元素返回true或false。语法arr.includes(valueToFind[,fromIndex])基本用法[1,2,3].includes(2);// true[1,2,3].includes(4);// false[1,2,3].includes(1,1);// false从索引1开始搜索[1,2,3].includes(3,-1);// true负数从末尾计算对比 indexOf// indexOf 返回索引找不到返回 -1[1,2,3].indexOf(2);// 1[1,2,3].indexOf(4);// -1// includes 返回布尔值语义更清晰[1,2,3].includes(2);// true[1,2,3].includes(4);// false处理 NaN 的优势// indexOf 无法正确判断 NaN[NaN].indexOf(NaN);// -1// includes 可以正确判断 NaN[NaN].includes(NaN);// true在 if 条件中使用// 旧写法if(arr.indexOf(item)!-1){// 找到了}// 新写法更简洁if(arr.includes(item)){// 找到了}注意事项只能判断简单类型和 NaN对象引用需要 匹配对undefined也能正确判断[1,undefined,3].includes(undefined);// trueletobj{a:1};letarr[obj];arr.includes(obj);// truearr.includes({a:1});// false不同引用2. 指数运算符****是一个新的数学运算符用于计算幂运算等价于Math.pow()。基本用法// 旧写法Math.pow(2,10);// 1024// 新写法2**10;// 1024负数底数(-2)**2;// 4(-2)**3;// -8注意不能一元运算符连用// 语法错误不能直接对负数使用-2**2;// SyntaxError// 需要加括号(-2)**2;// 4-(2**2);// -4结合赋值运算符**leta2;a**3;// a 8等同于 a a ** 3letb5;b**0;// b 1letc3;c**-2;// c 0.111...等同于 3 的 -2 次方实际应用场景// 面积计算letr5;letareaMath.PI*r**2;// 圆面积// 文件大小单位转换letbytes1024;letkbbytes**2;// 1,048,5761MBletmbbytes**3;// 1,073,741,8241GB// 二进制转十进制2**8;// 256总结特性说明用途Array.prototype.includes()判断数组是否包含某元素替代 indexOf 做存在性检查**指数运算符幂运算简写替代 Math.pow()ES7 虽然只新增了2个特性但都非常实用在日常开发中使用频率很高。