阅读:6499回复:1
ES7 and ES8 特性,ECMAScript 6教程ECMAScript 6 部署进度 Node 是 JavaScript 的服务器运行环境(runtime)。它对 ES6 的支持度更高。除了那些默认打开的功能,还有一些语法功能已经实现了,但是默认没有打开。使用下面的命令,可以查看 Node 已经实现的 ES6 特性。 // Linux & Mac $ node --v8-options | grep harmony // Windows $ node --v8-options | findstr harmony 一个工具 ES-Checker,用来检查各种运行环境对 ES6 的支持情况。访问ruanyf.github.io/es-checker,可以看到您的浏览器支持 ES6 的程度。运行下面的命令,可以查看你正在使用的 Node 环境对 ES6 的支持程度。 $ npm install -g es-checker $ es-checker ========================================= Passes 24 feature Detections Your runtime supports 57% of ECMAScript 6 ========================================= Babel 转码器 Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在现有环境执行。这意味着,你可以用 ES6 的方式编写程序,又不用担心现有环境是否支持。下面是一个例子。 / 转码前 input.map(item => item + 1); // 转码后 input.map(function (item) { return item + 1; } ); 上面的原始代码用了箭头函数,Babel 将其转为普通函数,就能在不支持箭头函数的 JavaScript 环境执行了。 下面的命令在项目目录中,安装 Babel。 $ npm install --save-dev @babel/core 具体见:http://es6.ruanyifeng.com/#docs/intro#部署进度 |
|
沙发#
发布于:2020-02-15 23:40
let 和 const 命令
let命令,用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 { let a = 10; var b = 1; } a // ReferenceError: a is not defined. b // 1 for循环的计数器,就很合适使用let命令。 for (let i = 0; i < 10; i++) { // ... } console.log(i); // ReferenceError: i is not defined 下面的代码如果使用var,最后输出的是10。 var a = []; for (var i = 0; i < 10; i++) { a = function () { console.log(i); }; } a[6](); // 10 上面代码中,变量i是var命令声明的,在全局范围内都有效,所以全局只有一个变量i。每一次循环,变量i的值都会发生改变,而循环内被赋给数组a的函数内部的console.log(i),里面的i指向的就是全局的i。也就是说,所有数组a的成员里面的i,指向的都是同一个i,导致运行时输出的是最后一轮的i的值,也就是 10。 如果使用let,声明的变量仅在块级作用域内有效,最后输出的是 6。 var a = []; for (let i = 0; i < 10; i++) { a = function () { console.log(i); }; } a[6](); // 6 |
|