1、let和const
1)let所在代码块形成作用域,let声明的变量只在其作用域中有效。
2)不存在变量提升
3)暂时性死区 :只要块级作用域内存在let
命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
4)相同作用域内不允许重复声明相同变量,包括参数。
5)const:声明常量,不可再进行赋值操作。
2、变量的解构赋值
按照一定模式,从数组和对象中提取值,对变量进行赋值,称之为解构。
let [a,b,c] = [1,2,3]
则abc分别对应123;
如果解构失败,则变量的值为undefined;
3、箭头函数
箭头函数只能替换函数表达式,不能替换函数声明。
//ES5
var fun = function(a,b) {
return a+b;
}
//ES6
let fun = (a,b)=>a+b;
//ES5
var foo = function(){
var a= 10;
var b = 20;
return a+b;
}
//ES6
let foo = () =>{
let a = 10;
let b = 20;
return a+b;
}
注意:箭头函数内部无this;
4、模板字符串
es5中字符串的拼接是使用+号,看看es6:
//ES5
var a = 10;
var b = 20;
var str = a+"+"+b+"="+(a+b);
//ES6
let a = 10;
let b = 20;
let str = `${a}+${b}=${a+b}`;
5、函数默认参数
//ES5
function add(a,b){
var A = a || 10;
var B = b || 20;
console.log(A+B);
}
add(); //当没有传参的时候,AB的值默认取10和20;
//ES6
function add(a=10,b=20) {
let A = a;
let B = b;
console.log(A+B);
}
add(); // 30
6、展开运算符
let arr1 = [1,2,3];
let arr2 = [...arr1,4,5,6];
console.log(arr2); // [1,2,3,4,5,6]
7.class类
先上一波代码看看:
class a {
constructor(x,y) {
this.x = x;
this.y = y;
}
render() {
console.log(1);
}
}
class b extends a {
constructor(m,n) {
super();
this.m = m;
this.n = n;
}
render() {
console.log(2);
}
}