遇到的 ES 问题

  1. 1. 解构赋值中的函数参数默认值
  2. 2. 二维数组初始化与 Array.from 方法

1. 解构赋值中的函数参数默认值

function draw({size = 'big', cords = { x: 0, y: 0}, radius = 25})
{
  console.log(size, cords, radius);
  // do some chart drawing
}

draw({
  cords: { x: 18, y: 30 },
  radius: 30
});

draw(); // TypeError: Cannot read property 'size' of undefined

传递的实参没有 size 参数,就会使用默认值,但是,如果不用任何参数,会报错!

在解构表达式的右边,加上 ={} 就可以解决。

function draw(
{size = 'big', cords = { x: 0, y: 0 }, radius = 25} = {}
)

draw();  // 打印 big { x: 0, y: 0 } 25

2. 二维数组初始化与 Array.from 方法

来自 segmentfault 社区

初始化为全 0 的二维数组

let arr = Array.from(Array(3)).map(() => Array(3).fill(0))

或者

let arr = [...Array(3)].map(() => Array(3).fill(0))

引申:

《JS 高级程序设计 4 版》中的 6.2.1:

分割字符串创建数组不用这么写:

let theArr = theStr.split("");

有了 from,可以这么写:

let theArr = Array.from(theStr);

虽然 from 是浅复制,但是对于基本类型来说也足够了。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。
我的空间