ES6

1 块级作用域

在es6之前,js只有全局作用域和函数作用域,let关键字引入了块级作用域

2 暂时性死区

var 声明的变量可以在声明之前使用,相当于默认为其声明其值为undifind;

let 声明的变量,只能先声明后使用,声明之前使用会报错

3 const命令

const是用来定义常量,声明的同时必须立即初始化。

4 解构赋值

let [a,b,c]=[1,2,3];//a=1;b=2;c=3

let{ a=2; b; c=4}={...{a:3,b:4}};//a=3;b=4;c=4

let { a=2; b; c=4}={a:3,b:4};//a=3;b=4;c=4

let [a,b,c,d,e]='hello'; 可以理解为模式匹配

5 模板字符串

模板字符串采用反引号``标示,并且模板字符串中的空格、换行将在输出时有所保留

let name='zhangsan';    `<span>${name}</span>`

${主体} 主体可以是表达式、运算、对象属性还可以是函数,若是字符串将直接输出这个字符串

6 含参函数的调用

function say(str){alert(str)}    say`hello`等同于say('hello')

7 函数function

function add(a=2,b=3){

  return a+b

}

add(3);//6

add(1,1);//2

为函数的参数添加默认值,执行函数时如果不传改参数,那么就用默认值替换;

8 箭头函数

var 变量名/函数名=(参数,参数)=>{代码块}

var f=v=>v

等同于 var f=function(v){return v}

var f=()=>5

等同于 var f=function(){return 5}

var sum=>(num1,num2)={num1+num2}

等同于 function sum(sum1,sum2){return num1+num2}

如果return的是一个对象,省略return的箭头函数中右边需要用()包起来

demo var obj=()=>({a:2})

等同于:

var obj=function(){retrun {a:2}}

9 数组的扩展

扩展运算符为三个点...,将一个数组转化为参数序列,通常与函数一起使用

function sum(num1,num2){return num1+num2}

sum(...[2,3]);//5

数组的合并[...arr1,...arr2]

字符串转字符数组[...'hello'] //["h","e","l","l","o"]

10 数组的方法

10.1 Array.from()      用于将两类对象转化为数组 1 类数组对象 2 实现Iterator接口的对象

如果参数是一个数组,直接返回一个一样的数组,可以接受第二个参数,与map的功能类似

let arr=Array.from([1,2,3],x=>x*x);//[1,4,9]

10.2 Array.of() 用于将一组值,转化为数组

基本上可以用来替换Ayyay()或者ne

[3,4,5,30,50,100].find(fn,person);//此时fn中的this指向person,返回值是30;

另外这两个方法都可以发现NaN,弥补了数组indexOf方法的不足

10.6 fill()

fill 方法用于用给定值填充一个数组

new Array(3).fill(5)[5,5,5]

new Array(3).fill('')    //['','','']

[2,3,4].fill(6)             //[6,6,6]

可以有第二个 第三个参数,指定填充开始的位置和结束的位置

[2,3,4,5,6,7].fill(0,2,5)   //[2, 3, 0, 0, 0, 7]

如果填充的类型为对象,那么被赋值的是同一个内存地址的对象,而不是深拷贝的对象。

10.7 数组实例的entries() keys() values()

都返回一个遍历器对象,可以用for...of循环进行遍历,唯一的区别是keys()是对键名的遍历values()是对键值的遍历 entries是对键值对的遍历

let arr=['a','b','c'];

for(let index of arr.keys()){}

for(let elem of arr.values()){}

for(let [index,elem] of arr.entries()){}

10.7 includes()

Array.prototype.includes() 方法返回一个布尔值,表示某个数组是否包含给定的值;与indexOf()类似,includes可以判断NaN,indexOf不可以

函数的length属性 返回没有指定默认值的参数的个数。如果指定默认值,length将失效

(function(a,b,c){}).length//3

(function(){}).length//0

(function(a=1,b=2){}).length//0

(function(a){}).length//1

(function(a,b=2){}).le
原文地址:https://www.cnblogs.com/xiaofenguo/p/10538057.html