ES6中的难点

function move({x=0,y=0}={}){
    return[x,y];
}
move({x:3,y:8});
move({x:3});
move({});
move();

function move({x,y}={x:0,y:0}){
    return[x,y];
}
move({x:3,y:8});
move({x:3});
move({});
move();
有什么区别

在第一段函数中

{x = 0, y = 0} = {} 是函数参数的解构赋值语法,同时{}作为默认参数值。这意味着:

  • 如果调用函数时没有提供任何参数,或者提供的参数不是一个对象,那么解构赋值会使用空对象{}作为默认值。
  • 由于xy在解构赋值时都有默认值0,因此无论传入的对象中是否包含xy属性,xy都将有确定的值(要么是传入对象中的值,要么是默认值0)。

因此,执行结果如下:

move({x: 3, y: 8}); 返回 [3, 8]

move({x: 3}); 返回 [3, 0]

move({}); 返回 [0, 0]

move(); 返回 [0, 0](因为使用了默认参数值{},然后解构赋值时xy都取默认值0

在第二段函数中

{x, y} = { x: 0, y: 0 } 是函数参数的解构赋值语法,同时{ x: 0, y: 0 }作为默认参数值。这里与第一段函数的主要区别在于解构赋值时没有为xy提供默认值。

  • 如果调用函数时没有提供任何参数,或者提供的参数不是一个对象,那么解构赋值会使用{ x: 0, y: 0 }作为默认值。
  • 但是,如果传入的对象缺少xy属性,并且没有为该属性在解构赋值时提供默认值,那么该属性的值将是undefined

因此,执行结果如下:

move({x: 3, y: 8}); 返回 [3, 8]

move({x: 3}); 返回 [3, undefined](因为y在传入的对象中不存在,且解构赋值时没有为y提供默认值)

move({}); 返回 [undefined, undefined](因为传入的是空对象,没有xy属性,且解构赋值时没有为它们提供默认值)

move(); 返回 [0, 0](因为使用了默认参数值{ x: 0, y: 0 }

相关推荐

  1. ES6难点

    2024-06-08 16:18:03       29 阅读
  2. ES6Promise

    2024-06-08 16:18:03       62 阅读
  3. ES6Set

    2024-06-08 16:18:03       52 阅读
  4. ES6Proxy

    2024-06-08 16:18:03       38 阅读
  5. 详解ES6symbol

    2024-06-08 16:18:03       56 阅读
  6. ES6 字符串方法

    2024-06-08 16:18:03       43 阅读
  7. ES6解构赋值

    2024-06-08 16:18:03       34 阅读
  8. ES6Map与Set

    2024-06-08 16:18:03       43 阅读
  9. es6Object.assign

    2024-06-08 16:18:03       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 16:18:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 16:18:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 16:18:03       82 阅读
  4. Python语言-面向对象

    2024-06-08 16:18:03       91 阅读

热门阅读

  1. Torrent、Magnet链

    2024-06-08 16:18:03       33 阅读
  2. 算法:70. 爬楼梯

    2024-06-08 16:18:03       26 阅读
  3. Ubuntu 22.04安装和配置Prometheus

    2024-06-08 16:18:03       29 阅读
  4. QT 信号和槽 解除关联示例 disconnect

    2024-06-08 16:18:03       35 阅读
  5. github搭建个人博客

    2024-06-08 16:18:03       36 阅读
  6. python系列:FASTAPI系列 09-POST请求BODY校验添加Field

    2024-06-08 16:18:03       32 阅读
  7. Web前端心得:深入探索与成长的旅程

    2024-06-08 16:18:03       28 阅读
  8. 链表逆序用哨兵位头节点

    2024-06-08 16:18:03       33 阅读
  9. React+TS前台项目实战(三)-- 国际化配置

    2024-06-08 16:18:03       29 阅读