新增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
es5var 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… 补充中。。。。