ES6新特新
给大家分享一下ES6的新特性,若有表达错误的地方,还望大家指出来!
1.let和const
let和const区别
let声明变量,const声明常量,const在声明常量的时候必须赋值
相同点
- 支持块级作用域;
- 变量不能提升;
- 存在暂时性死区;
“暂时性死区”就是在还没有声明的时候,该变量/常量是不可用 - 不可重复声明;
2.模板字符串
模板字符串(template string)是增强版的字符串,用反引号(``)标
识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。
例如:
let str = `There are <b>${count}</b> items
in your basket, <em>${num}</em>
are on sale!`;
模板字符串注意事项:
- 模板字符串中使用变量,则需将变量名放在${}里面;
let num = 20 ;
let str = `这是${num}块钱`;
console.log(str); //这是20块钱
- ${}大括号中放入Javascript表达式,可以进行计算;
let str = 1;
let str2 = 2;
let sum = ${str + str2};
- ${}还可以调用函数;
function fn () {
return xx;
}
`hh ${fn()} xx `
- 如果模板字符串中还有反引号,则需要使用反斜杠转义;
let str = `Hello \`world\``;
3.Symbol
ES6 引入的原始数据类型,表示独一无二的值。
var test1= Symbol('test');
var test2= Symbol('test');
console.log(tepeof test1); //'symbol'
test1== test2; //false
var test2= new Symbol('test'); //error : Symbol is not a constructor
4.解构赋值
解构赋值是对赋值运算符的扩展。它是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。
let [a , b , c ] = [1 , 2 , 3 ] ;
console.log(a,b,c); // 1,2,3
let [a , , c ] = [1 , 2 , 3 ] ;
console.log(a,,c); // 1,3
let [a , b , c ] = [1 , , 3 ] ;
console.log(a,,c); // 1, undefine , 3
let [a , b] = [1 , 2 , 3 ] ;
console.log(a,b); // 1, [2,3]
5.箭头函数
箭头函数就是使用(=>)定义函数,箭头函数没有 arguments 对象,如果要用就是用rest代替;函数体内也没有this,不可以当作构造函数,不可以使用new命令。
let fn = ( num1 , num2) => {
return num1 + num2;
}
如果箭头函数直接返回一个对象,必须在对象外面加上括号
let info = id => ({ id: id, name: "Lilin" });
6.Map和Set
-
Map按数组元素依次处理对象,必须有回调函数,用于保存键值对。
与对象不同的是
-
object的键只能是字符串或ES6的symbol值,而Map可以是任何值。
-
Map对象有一个size属性,存储了键值对的个数,而object对象没有类似属性。
let arr = [123,34,564,65];
let myFun = function( value ,index ){
return value*2; // 每个元素 * 2
};
let arr2 = arr.map( myFun ); // map会生成新的数组
console.info( arr2 ); // [246, 68, 1128, 130]
console.info( arr ); // [123,34,564,65]
- Set可以实现数组的去重。
let arr = [1,1,2,3,3,4,4];
let mySet = new Set(arr);
let newArr = Array.from(mySet);
console.log(newArr); //[1,2,3,4]
7.函数参数默认值
ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。
function myFun(a , b){
let n1 = a || 10 ;
let n2 = b || 20 ;
return n1 + n2 ;
}
console.info( myFun() ); // 30
console.info( myFun(2) ); // 22
console.info( myFun(2,5) ); // 7