ES6介绍
ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了也叫ECMAScript 2015。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言
let和const
let
let是块级作用域 ,函数内部使用let定义后,对函数外部无影响,只在let命令所在的代码块内有效。
let c = 3;
console.log('函数外let定义c:' + c);//输出c=3
function change(){
let c = 6;
console.log('函数内let定义c:' + c);//输出c=6
}
change();
console.log('函数调用后let定义c不受函数内部定义影响:' + c);//输出c=3
const
const声明一个只读的常量。一旦声明,常量的值就不能改变。而且必须初始化。
const b = 2;//正确
// const b;//错误,必须初始化
console.log('函数外const定义b:' + b);//有输出值
// b = 5;
// console.log('函数外修改const定义b:' + b);//无法输出
let、const、var区别
- const 和let不存在变量提升
- let和var定义的是变量,可作更改;const定义的是常量,不可更改。
- const和let的作用域为
{}
;var的作用域为function
(函数中)
ES6变量的解构赋值
数组的解构
let a = 1;
let b = 2;
let c = 3;
ES6 允许写成下面这样。
let [a, b, c] = [1, 2, 3];
对象的解构
let {d,e,f} = {d:3,e:4,f:5}
console.log(d,e,f); // 3 4 5
对象的扩展
属性简写
const foo = 'bar';
const baz = {foo};
baz // {foo: "bar"}
// 等同于
const baz = {foo: foo};
只有当定义的变量和对象中的属性值一致
时才可写成{foo: foo}
的格式,否则将会改变对象的值,直接影响后续代码的执行。
方法简写
const a = {
method: function() {
return "Hello!";
}
};
// 等同于
const a = {
method() {
return "Hello!";
}
};
函数的扩展
ES6允许使用“箭头”=>
定义函数
var f = v => v;
// 等同于
var f = function (v) {
return v;
};
如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return
语句返回。
var sum = (num1, num2) => { return num1 + num2; }
注意点:
1. 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
2. 不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
3. 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用rest参数代替。
4. 在箭头函数中,this是固定的。