当前位置: 首页 > news >正文

ES7(ES2016)新特性

ES7(ES2016)新特性

发布时间:2016年6月
ES7 是最小的一个版本,仅新增了2个特性。


1. Array.prototype.includes()

判断数组中是否包含指定元素,返回truefalse

语法

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

结合赋值运算符**=

leta=2;a**=3;// a = 8,等同于 a = a ** 3letb=5;b**=0;// b = 1letc=3;c**=-2;// c = 0.111...,等同于 3 的 -2 次方

实际应用场景

// 面积计算letr=5;letarea=Math.PI*r**2;// 圆面积// 文件大小单位转换letbytes=1024;letkb=bytes**2;// 1,048,576(1MB)letmb=bytes**3;// 1,073,741,824(1GB)// 二进制转十进制2**8;// 256

总结

特性说明用途
Array.prototype.includes()判断数组是否包含某元素替代 indexOf 做存在性检查
**指数运算符幂运算简写替代 Math.pow()

ES7 虽然只新增了2个特性,但都非常实用,在日常开发中使用频率很高。

http://www.jsqmd.com/news/562223/

相关文章:

  • PyTorch Autograd动态计算图实战:从构建、可视化到高效调试
  • 别再混淆了!JavaScript与Java的10个本质区别(附常见面试题解析)
  • 避坑指南:UE5中Add Input Mapping Context的5个常见错误用法及正确姿势
  • Mailtrain自托管邮件营销平台:10个关键新功能规划与发展方向展望
  • 5分钟快速上手SQLite JDBC:从零开始的Java数据库编程
  • MediaPipe TouchDesigner终极指南:零代码实现实时视觉交互艺术
  • Helm包管理完全指南:简化Kubernetes应用部署
  • LDL receptor-peptide 2 (LRPep2);HPWCCGLRLDLR
  • 10个企业级Windows自动化场景:pywinauto终极应用指南
  • 告别手动校验!用Keil MDK和srec_cat一键为固件.bin文件添加MD5签名(附完整脚本)
  • OpenAI Translator Bob Plugin API密钥安全配置终极指南:10个实用技巧保护你的AI翻译体验
  • Zombie.js终极指南:如何在Node.js中快速搭建无头浏览器测试环境
  • 2026年半导体行业展会哪个比较好?精选高口碑优质半导体行业展会 - 品牌2026
  • 开源街机模拟器:用FinalBurn Neo重燃街机黄金时代
  • 告别Socket API:用libhv的UdpClient类3步搞定C++ UDP通信
  • Pikachu靶场实战:文件包含漏洞(File Inclusion)的攻防演练
  • SpringBoot+Druid连接池实战:如何避免PostgreSQL查询超时引发的‘canceling statement‘错误
  • 不用修改系统源码!基于IActivityController的安卓应用锁替代方案详解
  • AIGlasses_for_navigation精彩案例分享:真实视障用户过马路辅助语音引导记录
  • 终极指南:如何通过Vorpal实现专业级CLI错误处理与调试
  • 408复试别慌!数据库+计网核心考点保姆级梳理(附高频面试题解析)
  • 半导体展览会名单怎么查?一文盘点高热度半导体展览会主流精选榜单 - 品牌2026
  • Legacy iOS Kit技术指南:如何让旧款iOS设备重获新生
  • 【Game】Powerful——Pets(4.2)
  • 矩阵——矩阵置零
  • 颈椎病:低头族的隐形警报,你的脖子正在求救!
  • 点云处理实战:如何用RMLS算法保留锐利边缘(附Python代码示例)
  • Odoo文档自动化与电子签名:企业数字化转型的终极解决方案
  • 导师推荐!盘点2026年当红之选的AI论文平台
  • React Native Splash Screen终极适配指南:完美适配不同设备的5个关键技巧