两周前,《ECMAScript国际标准(第6版)》正式通过,下一代 JavaScript 语言定案。ECMAScript 6(以下简称 ES6)总共新增了20多项重大的语言特性。各种浏览器和 Node.js 都积极支持,但还有不少功能没实现。上个周末,我读到了 Kyle Simpson 的文章《ES6: Features By Testing》,发现他开发了一组测试,可以侦测运行环境支持哪些 ES6 的功能。我就在他的基础上 ,写了功能侦测库ES-Checker,用于查看 ES6 的支持情况。今天,我把这个库提交到Hacker News,结果居然进入了首页!虽然,名次不高,上榜时间也不长,但也算实现了一个人生愿望。请看Demo,你的浏览器支持多少 ES6?ES-Checker可用于多种环境。(1)命令行环境$ npm install -g es-checker
$ es-checker(2)Node环境将 ES-Checker 安装在项目的根目录。$ npm install es-checker就可以在脚本中引用 ES-Checker 了。var Supports = require("es-checker");
if (Supports.letConst) {
let x = 5;
} else {
var x = 5;
}Supports 对象的属性清单,请见后文。(3)浏览器环境将 es-checker.js 插入页面。然后在脚本中使用 Supports 对象,决定哪些功能可以使用。附:Supports 的属性清单letConst: let 和 const 命令defaultParameter: 函数的默认参数spreadRest: 扩展(...)运算符destructuring: 解构赋值parameterDestructuring: 函数参数的解构templateString: 模板字符串forOf: for...of循环arrow: 箭头函数generator: generator函数conciseMethodProperty: 对象属性的简洁表示法computedProperty: 对象属性名使用表达式moduleExport: 模块的export命令moduleImport: 模板的import命令numericLiteral: 数值的八进制和二进制表示法oldOctalLiteral: 八进制的前缀零表示法symbol: Symbol类型unicodeEscape: Unicode字符的大括号表示法unicodeIdentifier: Unicode字符是否可用作标识名unicodeRegExp: 正则表达式的u修饰符stickyRegExp: 正则表达式的y修饰符class: 类(class)letTDZ: let命令的暂时性死区constRedef: 不允许再次用const声明同一变量objectProto: 对象的proto属性objectSuper: 对象方法是否可以使用superextendNatives: 原生类型的扩展tco: 尾调用优化symbolImplicitCoercion: Symbol值不能用于运算functionNameInference: 匿名函数的name属性推断函数名objectStatics: Object的静态方法arrayStatics: 数组的静态方法arrayMethods: 数组的实例方法typedArrays: 类型化数组typedArrayStatics: 类型化数组的静态方法typedArrayMethods: 类型化数组的实例方法stringMethods: 字符串的实例方法numberStatics: Number对象的静态方法mathStatics: Math对象的静态方法collections: Map, Set, WeakMap, WeakSetproxy: Proxy对象promise: Promise对象(完)文档信息版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)发表日期:2015年6月30日更多内容:档案»JavaScript购买文集:《如何变得有思想》社交媒体:twitter,weiboFeed订阅:[广告]GreenVPN是一款运营多年的绿色、稳定、安全的VPN产品,帮助您轻松浏览Google、Facebook、Youtube、Twitter等,使用简单,手机电脑全平台支持,可免费试用,值得推荐。