ES6新增的特性和方法

284 阅读3分钟

新增let const

let 对比 var 有块级作用域

区别:没有与解析,不会有变量提升,在代码块呢定义了let,在声明之前的会报错【先定义再使用】

同一个作用域,不能重复定义变量

for循环,for循环()里面是{}里面的父级作用域

const和let特性一样具有块级作用域

区别:const定义的变量不能修改【const定义的是栈 复杂数据类型记住的是地址】

const定义完变量必须有值,不能后赋值 相当于常量

要让复杂数据类型不能更改需要 const obj = Object.freeze(对象)

新增结构赋值

let [a,b,c] = [1,2,3] 左右两边要保持结构一致

let [a,b,c="3"] = [1,2] 结构赋值给默认值

字符串模版

es5

var name="liming"
str="myname is" + name

es6

let name="liming"
str=`myname is${name}`

字符串新增方法

字符串查找 str.includes("查找内容") 返回值 true/false

es5
var str = "hello world"
if(str.indexOf("hello") > -1){
//存在
}else{
//不存在
}

es6

let str = "hello world"
if(str.includes("hello")){
//存在
}else{
//不存在
}

字符串以什么开头及什么结尾 str.startWith("查找内容") /str.endWith("查找内容")

以什么开头【可以检测网址】
let str = "hello world"
if(str.startsWith("hel")){
// true
}

以什么结尾【可以检测文件】

let str = "hello world"
if(str.endsWith("rld")){
// true
}

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

let str = "hello"
str.repeat(2) //hellohello

填充字符串 str.padStart/str.padEnd

str.padStart("总长度",要填充的内容) 前面填充

str.padStart("总长度",要填充的内容) 后面填充

let str = "hello"
str.padStart("7","me") // mehello

函数默认值

function ant(a = 1,b = 2){ //可以给参数加上默认值 当调用时没传时回用这里的值
console.log(a,b)
}
ant(222) //输出的是 222和2 

这里当入参为对象的时候需要以下赋值 例

function ant({a=1,b=2}={}){
console.log(a,b)
}
ant({a:1,b:4}) //输出值为 1,4 
ant() //输出值为1,2

函数中参数已经默认声明了 不能再次使用let和const再次声明

function ant({a=1,b=2}={}){
let a = 5 // 这里会抛错
console.log(a,b)
}
ant({a:1,b:4}) 

扩展运算符 & 重置运算符

可以扩展数组

let arr = [1,2,3]
console.log(...arr) // 输出 1 2 3

可以重置数组

function test(...a){
console.log(a)
}
test(1,2,3,4) //这里会输出[1,2,3,4]

剩余运算符

function test2(a,...b){
console.log(a,b)
}
test2(1,2,3,4) //输出 1 [2,3,4]

拷贝数组

let a=[1,2,3]
let b=[...a]
console.log(a===b)// 返回false 说明拷贝了数组

箭头函数

let a = ()=>1
console.log(a()) //输出1
相当于
function a(){
return 1
}
console.log(a()) //输出1

改变this指向

例不用箭头函数

var a = 123
let json = {
a:1,
show:function(){
setTimeout(function(){
console.log(this.a)
},0)
}
}
json.show() //输出 123

用箭头函数

var a = 123
let json = {
a:1,
show:function(){
setTimeout(()=>{
console.log(this.a)
},0)
}
}
json.show() //输出 1

this定义函数所在的对象,不是运行时所在的对象,

箭头函数中没有arguments

解决方案用扩展运算符...

这里我们可以用扩展运算符来获取
let show = (...a)=>{
console.log(a)
}
show(1,2,3) //输出 [1,2,3]

数组新增

ES5及ES6数组的循环 juejin.cn/post/688638… 补充中。。。。

对象新增

Promise

模块化

类(class)与继承

Symbol和Generator

async和await