简介:
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 - 唯一的、不可修改的数据
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); // 1 for (let i = 0;i<10;i++) { console.log(i); } console.log(i); console.log("let&var的区别============="); for (var i = 0;i<10;i++) { console.log(i); } console.log(i);运行的结果:
> > 4 > 1 > 5 > 1 > 0 > 1 > 2 > 3 > 4 > 5 6 7 8 9 undefined let&var的区别============= 0 1 2 3 4 5 6 7 8 9 10const
const这个声明创建一个常量,可以全局或局部的函数声明。
一个常量可以是全局的或者是局部的,常量遵循与变量相同的作用域规则。
一个常量不可以被重新赋值,并且不能被重复声明.所以,虽然可以在声明一个常量的时候不进行初始化,但这样做是没有意义的,因为这个常量的值永远会保持undefined。
一个常量不能和它所在作用域内的其他变量或函数拥有相同的名称。
const num = 10; num =20; console.log(num); // 10如果我们在上面声明常量num,在声明var num,这时会报错,num已经声明。
const num = 10; var num = 20; console.log(num); // 'num' has already been declared
块级作用域
很多语言中都有块级作用域,JavaScript使用var声明变量,以function来划分作用域,大括号“{}” 却限定不了var的作用域。用var声明的变量具有变量提升(declaration hoisting)的效果。
ES6里增加了一个let,可以在{}, if, for里声明。用法同var,但作用域限定在块级,let声明的变量不存在变量提升。
'use strict'; function f1() { var a = 1; let n = 2; if (true) { var a = 20; let n = 10; } console.log(n); // 2 console.log(a); // 20 } f1();