JS中三个点(...)是什么?
我们在看js代码时经常会出现(...)三个点的东西,它究竟是什么意思?又有何用处?
下面我就给大家分享一下三个点的那些事
什么意思?
三个点(...)真名叫扩展运算符,是在ES6中新增加的内容,它可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开;还可以在构造字面量对象时将对象表达式按照key-value的方式展开
字面量一般指[1,2,3]或者{name:'chuichui'}这种简洁的构造方式,多层嵌套的数组和对象三个点就无能为力了
说白了就是把衣服脱了,不管是大括号([])、花括号({}),统统不在话下,全部脱掉脱掉!
1 2 3 4 5 6 |
// 数组
var number = [ 1 , 2 , 3 , 4 , 5 , 6 ]
console.log(...number) //1 2 3 4 5 6
//对象
var man = {name: 'chuichui' ,height: 176 }
console.log({...man}) / {name: 'chuichui' ,height: 176 }
|
有什么用?
它的用处很广泛,我们随处都可以看到,下面是几个常见的例子
复制用它
1 2 3 4 5 6 7 8 |
//数组的复制
var arr1 = [ 'hello' ]
var arr2 =[...arr1]
arr2 // ['hello']
//对象的复制
var obj1 = {name: 'chuichui' }
var obj2 ={...arr}
ob12 // {name:'chuichui'}
|
合并用它
1 2 3 4 5 6 7 8 9 10 |
//数组的合并
var arr1 = [ 'hello' ]
var arr2 =[ 'chuichui' ]
var mergeArr = [...arr1,...arr2]
mergeArr // ['hello','chuichui']
// 对象分合并
var obj1 = {name: 'chuichui' }
var obj2 = {height: 176 }
var mergeObj = {...obj1,...obj2}
mergeObj // {name: "chuichui", height: 176}
|
字符转数组用它
1 2 |
var arr1 = [... 'hello' ]
arr1 // ["h", "e", "l", "l", "o"]
|
函数传参用它
可以和正常的函数相结合,灵活使用
1 2 3 |
function f(v,w,x,y,z){ }
var args = [ 2 , 3 ]
f( 1 ,...args, 4 ,...[ 5 ])
|
当我们想把数组中的元素迭代为函数参数时,用它!
1 2 3 4 5 6 |
function f(x,y,z){}
var args = [ 1 , 2 , 3 ]
f(...args)
// 以前的方法
f.apply( null ,args);
|