ES6常用语法
let,const
let用于变量的声明,可以防止变量提升,实际上为JavaScript新增了块级作用域。用它所声明的变量,只在let命令所在的代码块内有效。const也用来声明变量,但是声明的是常量。一旦声明,常量的值就不能改变。
class,extends,super
1 | class Animal { // class定义一个“类” |
arrow function
1 | function(i){ return i + 1; } //ES5 |
当我们使用箭头函数时,函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,它的this是继承外面的,因此内部的this就是外层代码块的this。
template string
1 | $("#result").append( |
destructuring
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
1 | let cat = 'ken' |
default,rest
default语法为某个参数指定默认值
1 | function animal(type){ |
rest语法用于指代一类参数,可以替代ES5中是arguments
1 | function animals(...types){ |
import,export
在ES6之前为解决模块化问题,我们得利用第三方提供的一些方案,主要有两种CommonJS(服务器端)和AMD(浏览器端,如require.js)。
假设我们有两个js文件:index.js和content.js,现在我们想要在index.js中使用content.js返回的结果,我们来看看三种写法。
require.js
1
2
3
4
5
6
7
8
9//content.js
define('content.js', function(){
return 'A cat';
})
//index.js
require(['./content.js'], function(animal){
console.log(animal); //A cat
})CommonJs
1
2
3
4
5//index.js
var animal = require('./content.js')
//content.js
module.exports = 'A cat'ES6
1
2
3
4
5//index.js
import animal from './content'
//content.js
export default 'A cat'
ES6 module高级用法
1 | //content.js |
上面可以看出,export命令除了输出变量,还可以输出函数,甚至是类.
1 | //index.js |
as修改变量名
1 | import animal, { say, type as animalType } from './content' |
模块的整体加载
用星号()指定一个对象,所有输出值都加载在这个对象上面,通常星号结合as一起使用比较合适。
1 | import animal, * as content from './content' |