You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
let{a,...b}=undefined;// Uncaught TypeError: Cannot destructure property `a` of 'undefined' or 'null'.let{...q,k}={m:1,n:2,k:3};// Uncaught SyntaxError: Rest element must be last elementlet{x,...z}={x:1,y:2,z:3};z// {y:2,z:3}
使用了扩展运算符后,把目标对象上所有可遍历但尚未被读取的属性,分配到指定对象上。
与数组解构结合
与数组解构结合需要满足的条件有:
等号右边是一个数组。
解构必需是最后一位,否则会报错。
let[...x]=123;// 123 is not iterablelet[...q,k]=[1,2,3];// Uncaught SyntaxError: Rest element must be last elementlet[x,...z]=[1,2,3];z// [2,3]
目录
引子
在 ES2015 之前,有把函数的
arguments
转变为某种可以当作数组来使用的方法,现在可以摆脱这些方法了。这是继 JavaScript 新旧替换二:赋值和取值的第三篇。
ES5 方式
主要是使用了
apply()
方法,该方法用途是在特定的作用域中调用函数,实际上等于设置函数体内this
对象的值。该接受两个参数:一个是在其中运行函数的作用域,另一个是参数数组。其中,第二个参数可以是Array
的实例,也可以是arguments
对象。ES2015+ 方式
在 ES2015 中引入了一个新的运算符
...
,称为 spread 或 rest(展开或收集)运算符。不同情况下,会有不同的特性。这里运算符
...
使用的特性有:foo(...args)
中使用了收集的特性,把一系列值收集到一起成为一个数组。console.info(...args)
中使用了展开的特性,这里把数组args
展开为一组函数调用的参数。在 ES2018 中这个运算符引入到了对象。它会取出对象的所有可遍历属性,拷贝到当前对象中。
使用于对象常见的几种情况如下:
一般对象
可见只是进行了浅拷贝,等同于使用
Object.assign()
方法。数组
字符串
其它
应用
运算符
...
较常见应用有:复制对象或数组
需要注意都是浅拷贝。
合并对象或数组
与解构结合
与对象解构结合
与对象解构结合需要满足的条件有:
使用了扩展运算符后,把目标对象上所有可遍历但尚未被读取的属性,分配到指定对象上。
与数组解构结合
与数组解构结合需要满足的条件有:
参考资料
🗑️
看了电影《阳光普照》,里面关于司马光砸缸故事的重新解读,角度很有特点。下面是电影中对话。
场景是在一个公交站。
这时公交车来了,但女生没有乘坐公交。
女生摇摇头看着他。
The text was updated successfully, but these errors were encountered: