Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。
Node v4这个版本是Node和iojs合并后发布的首个稳定版本,并且为开发者带来了大量的ES6语言扩展。了解 Node.js中包括的ES6语言扩展。本课将会为你介绍如何使用这些新特性。
Node.js 4.0.0 可以让您享受最尖端的技术,保持项目的先进性。其中对 v8 的升级几乎做到了与 Chromium / Google Chrome 同步,达到了 4.5.x,它提供了很多新的语言功能。ECMA-262 是 JavaScript 语言规范的最新版本,而且好多新特性数都是开箱即用的。这些新特性包括:
classes - 各种 ‘类’,再也无需用 CoffeeScript 的语法糖写类了
generators - 未来的.js 代码中将有无数生成器,不学一点就看不懂 JS 代码了哦
collections - 集合、映射、弱集合、弱映射
arrow functions - 箭向函数
block scoping - 使用 let 、const 作用域,块辖域
template strings - 模板字串
promises - 用标准化了的方法进行延迟和异步计算
symbols - 唯一的、不可修改的数据
严格模式
严格模式在语义上与正常的JavaScript有一些不同。 首先,严格模式会将JavaScript陷阱直接变成明显的错误。其次,严格模式修正了一些引擎难以优化的错误:同样的代码有些时候严格模式会比非严格模 式下更快。 第三,严格模式禁用了一些有可能在未来版本中定义的语法。
因为我们ECMAScript 6中的一些特性,必须在严格模式下,才可以使用,而不报错。
严格模式可以应用到整个script标签或某个别函数中。
为整个script标签开启严格模式, 需要在所有语句之前放一个特定语句 "use strict"; (或 'use strict';)
"use strict"; let v = "Hi! I'm a strict mode script!"; console.log(v) ;
同样的,要给某个函数开启严格模式,得把 "use strict"; (或 'use strict'; )声明一字不漏地放在函数体所有语句之前。
function strict() { // 函数级别严格模式语法 'use strict'; return "Hi! I'm a strict mode function!" ; } function notStrict() { return "I'm not strict."; }let 允许把变量的作用域限制在块级域中。与 var 不同处是:var 申明变量要么是全局的,要么是函数级的,而无法是块级的。
let vs var
let的作用域是块,而var的作用域是函数
'use strict'; var a = 5; var b = 10; if (a === 5) { let a = 4; // The scope is inside the if-block var b = 1; // The scope is inside the function console.log(a); // 4 console.log(b); // 1 } console.log(a); // 5 console.log(b); // 1let在循环中
可以使用let关键字绑定变量在循环的范围而不是使用一个全局变量(使用var)定义。
'use strict'; for (let i = 0; i < 10; i ) { console.log(i); // 0, 1, 2, 3, 4 ... 9 } //console.log(i); // i is not defined上面报错,因为变量i不存在于for语句外的作用域中。let创建块级作用域变量的,使用var创建一个全局变量。
