es6知识汇总一

127 阅读2分钟

一. let 和 const 命令

let声明变量属于局部变量,只在代码块中有效

用法:

1.先定义,后使用

2.不能重复定义变量

3.存在暂时性死区,没有预编译,不存在变量提升

** 4.for循环里面是父级作用域,let声明的变量是局部变量,当前的i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量 **

     var a = [];
	for (let i = 0; i < 10; i++) {
	  a[i] = function () {
		console.log(i);
	  };
	}
	a[6](); // 6

const

1.定义常量、声明匿名函数、箭头函数。 只声明不赋值,就会报错

2.命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用

3.只在声明所在的块级作用域内有效

** 二.变量的解构赋值**

1.数组解构赋值 :

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

2.对象解构赋值:

 const state = {
	name: '张三',
	job: 'worker'
};
let {name,job} = state;

3.字符串解构赋值:

 let [a,b,...c]='hello'    //c:['l','l','o']

4.数值和布尔值解构赋值

 let {toString: s} = 123;  
 //s:function toString() { [native code] }

5.函数参数解构赋值

 function add([x, y]){
  return x + y;
}
add([1, 2]); // 3

模式匹配:只要等号两边的模式相同,左边的变量就会被赋予对应的值

let [foo, [[bar], baz]] = [1, [[2], 3]];

不完全解构:即等号左边的模式,只匹配一部分的等号右边的数组

let [x, y] = [1, 2, 3]    x // 1  y // 2

解构不成功,变量的值就等于undefined。

 let [bar, foo] = [1];     //bar :1     foo:undefined

指定默认值

let [foo = true] = [];       foo // true

三.字符串的新增方法

字符串模板 ${变量}
字符串查找 :
str.indexOf(要找的东西)    //索引下标 /-1
str.inclueds(要找的东西)  //true/false
str.startsWith(...)     字符串是否以。。。开头//true/false
str.endsWith(...)   	字符串是否以。。。结尾//true/false

str.repeat(。。)    重复字符串。。次数  

字符串补全长度的功能:
str.padStart(填充的长度,内容)       往前填充
str.padEnd()                   往后填充

消除空格:
str.trimStart()  ==  str.trimLeft()   //消除前面空格
str.trimEnd()	==	str.trimRight()		//消除后面空格
str.trim()          //消除两头空格

四.数值扩展

Number.isFinite(..)    //用来判断是否是数值
Number.isNaN(..)       //用来判断是否为NaN
Number.parseInt()         //取整
Number.parseFloat()     //保留小数
Number.isInteger()         用来判断一个数值是否为整数.整数和浮点数采用的是同样的储存方法,所以 2525.0 被视为同一个值
2**3    //8 指数运算符

五.函数的扩展

函数默认参数

function show({a='hello',b='world'}={}){
    // 函数参数默认已经定义了,不能再使用let,const声明
	console.log(a,b)      //hello,world
}
show()

扩展运算符、reset运算符 ...

  let arr=['apple','branan','orange']
console.log(...arr)    //数组转成字符串   

let copy=[1,2,3,4]
let copy2=[...copy]  //拷贝数组
let copy3=Array.from(copy) //拷贝
console.log(copy,copy2,copy3)

箭头函数 :

注意点:

** 1.this问题,定义函数所在的对象,不在是运行时所在的对象**

2.箭头函数里没有arguments,用'...'

3.箭头函数不能当构造函数使用