1 js语言下一代的标准 2015年6月发布
作用 编写大型的项目(模块化)
es5 (变量覆盖,全局变量污染)
//数组的扩展
> console.log(...[1,2,3])
1 2 3
undefined
> let arr=[1,2,3]
undefined
//把数组当做参数传给函数
> function get(x,y,z){
... console.log(x);
... console.log(y);
... console.log(z);
... }
undefined
//es5
> get.apply(null,arr)
1
2
3
undefined
//es6
> get(...arr)
1
2
3
undefined
>
> > let a=1
undefined
> const arr = [
... ...(a>0?['a']:[]),
... 'b']
undefined
> arr
[ 'a', 'b' ]
> let b=[...[],1]
undefined
> b
[ 1 ]
> (...[1,3])
> 报错 只有函数调用的时候才可以放在小括号里面
//替代apply
// 怎么连接两个数组 ?
> let a=[1,2,3]
undefined
> let b=[6,7]
undefined
> a.concat(b)
[ 1, 2, 3, 6, 7 ]
// assign
> a
[ 1, 2, 3 ]
> b
[ 6, 7 ]
> Array.prototype.push.apply(a,b)
5
> a
[ 1, 2, 3, 6, 7 ]
2 数组的扩展
含义:es6新增的处理数组的一些方法(语法糖)
作用:更简便的处理我们的数组
3 扩展运算符
… 拆包 打包的过程
1 函数调用(把数组当做参数传给函数)
2 放置表达式
//取最大值
> let arr=[14,4,56]
undefined
> Math.max.apply(null,arr)
56
> Math.max(...arr)
56
>
3 注意 …[] 和没写是一样的
只有函数调用的时候才可以放在小括号里面
四 复制 (只是复制指针第一层数据变,就变)
浅克隆 (第一层数据变,不变)
concat,apply,push assign,展开运算符
深克隆(第二层以至于更深层的变,不变)
let arr=[12,34,56]
undefined
> let arr1=arr;
undefined
> arr1[0]=78;
78
> arr
[ 78, 34, 56 ]
>
> // 复制 指针指向同一个地址
> 浅克隆 深克隆
> let arr0=[1,2,3]
undefined
> let arr01=arr0.concat()
undefined
> arr01[0]=2
2
> arr0
[ 1, 2, 3 ]
>
> let arr_0=[1,2,3]
undefined
> let arr_1=[...arr_0]
undefined
> arr_1[0]=2
2
> arr_0
[ 1, 2, 3 ]
// 深克隆
let arr=[{a:1},2,3]
undefined
> let arr1=[...arr]
undefined
> arr1[0].a=2
2
> arr
[ { a: 2 }, 2, 3 ]
> // ? 怎么实现深克隆 > let arr=[{a:1},2,3]
undefined
> let arr0=JSON.parse(JSON.stringify(arr))
undefined
> arr0[0].a=5
5
> arr
[ { a: 1 }, 2, 3 ]
> arr0
[ { a: 5 }, 2, 3 ]
>
五 字符串的扩展
作用 : 为了更好地处理我们的字符串
1 为了更好地处理换行
2 更方便的处理字符串中的变量
3 可以调用函数
4 可以做嵌套
// 模板字符串 ``
// let s = '我爱我的祖国和\n我的母亲'
// let s1 = `我爱我的祖国和
// 我的母亲`
// console.log(s1);
// let a = '123'
// let b = '我爱我的祖国还有'+a+'我的老婆'
// let c = `我爱我的祖国还有${a}我的老婆`
// console.log(c);
// function get(){
// return '祖国'
// }
// let a = `我爱我的${get()}`
// console.log(a);
let arr = [1,2,3]
const str = (arr)=>{
return `我是第一级字符串
${arr.map((value)=>{return `${value}`})}
`
}
console.log(str(arr));