文章目录

  • 1. 函数参数的解构赋值方式
  • 2. 函数参数解构设置参数默认值
    • 1. 方法1
    • 2. 方法2
  • 3. 总结

1. 函数参数的解构赋值方式

下面代码中,函数add的参数表面上是一个数组,但在传入参数的那一刻,数组参数就被解构成变量x和y。对于函数内部的代码来说,它们能感受到的参数就是x和y。

function add([x, y]){return x + y;
}add([1, 2]); // 3

如下代码所示,函数参数写成对象的形式也可以,毕竟数组也是对象的一种。

function add({x, y}) {return x + y;
}add({x:1,y:2}); // 3

2. 函数参数解构设置参数默认值

1. 方法1

下面代码中,函数show的参数是一个对象,通过对这个对象进行解构,得到变量x和y的值。如果解构失败,x和y等于默认值。
注意:之所以触发参数默认值,是因为传递的参数值为undefined。

function show({x = 0, y = 0} = {}) {return [x, y];
}show({x: 1, y: 2}); // [1, 2]
show({x: 1}); // [1, 0]
show({}); // [0, 0]
show(); // [0, 0]show({x: 1, y: undefined}); // [1, 0]

2. 方法2

该方法的写法与上面方法的唯一区别就是将默认值写到了后面的大括号里,就得到了完全不一样的结果。
这是因为该方法是为函数参数指定默认值,而方法1是为变量x,y指定默认值。因此,当有参数传入时,无论传入的参数是何值,包括undefined,都会被当做有参数传入,不会触发默认值。只有完全没有参数传入时,才会触发默认值[0, 0]。

function show({x, y} = {x: 0, y: 0}) {return [x, y];
}show({x: 1, y: 2}); // [1, 2]
show({x: 1}); // [1, undefined]
show({}); // [undefined, undefined]
show(); // [0, 0]show({x: 1, y: undefined}); // [1, undefined]

3. 总结

  1. 参与解构的函数参数可以写成对象或者数组的形式。
  2. 当默认值写在前面大括号里时,传入参数是undefined时会触发默认值。
  3. 当默认值写在后面大括号中时,无参数传入时触发默认值。

参考文献:《ECMAScript 6 入门教程》

ES6函数参数的解构赋值,以及2种设置参数默认值方法的区别相关推荐

  1. 【ES6】变量的解构赋值

    [ES6]变量的解构赋值 一.什么叫解构赋值? 二.解构赋值有哪些分类?写法? 1)对数组的解构赋值 2)对对象的解构赋值 3)对字符串的解构赋值 4)对数值和布尔值的解构赋值 5)对函数参数的解构赋 ...

  2. [ES6] 细化ES6之 -- 变量的解构赋值

    变量的解构赋值 解构赋值是什么 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值 var/let [变量名称1,变量名称2,...] = 数组或对象 本质上,这种写法属于"模式 ...

  3. ES6中变量的解构赋值

    1.数组的解构赋值 基本用法 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 输出: 上面代码表示,可以从数组中提取值,按照对应位置,对变 ...

  4. ES6之变量的解构赋值

    变量的解构赋值 1. 数组的解构赋值 基本用法 ES6允许写成下面这样 let [a, d, c] = [1, 2, 3]; //按照对应位置对变量赋值 这种写法也叫模式匹配 只要等号两边模式相同(解 ...

  5. ES6之二(解构赋值)

    ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring).解构分为以下几种: 数值解构 1. 情况1:少 对 多 ---解构成功 let [ , , ...

  6. Vue2.x—理解vuex核心概念action(使用到ES6的变量的解构赋值)

    Action Action 类似于 mutation,不同在于: Action 提交的是 mutation,而不是直接变更状态. Action 可以包含任意异步操作. 让我们来注册一个简单的 acti ...

  7. 石川es6课程---6、解构赋值

    石川es6课程---6.解构赋值 一.总结 一句话总结: 结构相同一一对应的方式赋值:let [json, arr, num, str] = [{ a: 1, b: 2 }, [1, 2, 3], 8 ...

  8. ES6中的对象解构赋值

    解构赋值: 解构赋值语法是一个Javascript表达式,这使得可以将数据从数组或对象提取到不同的变量中(这段话是mdn中关于解构赋值的定义,注意这里的定义,可以看出解构主要用在数组和对象上). 说白 ...

  9. es6分享——变量的解构赋值

    变量的解构赋值:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 以前的写法: var a = 1; var b = 2; es6允许的写法 ...

最新文章

  1. 京东员工怒怼公司:每天工作到很晚甚至凌晨,你跟我说这是幸福?
  2. 得到文件的服务器路径,如何获取服务器上的路径?
  3. 初学者学习Java的几大技巧
  4. 移动设备wap手机网页html5通过特殊链接:打电话,发短信,发邮件详细教程
  5. h5页面禁止复制_网页禁止鼠标右键禁止全选复制粘贴的方法
  6. 现在还有必要学Java开发吗?前景好吗?
  7. 11.13模拟:总结
  8. 【Python CheckiO 题解】Speech Module
  9. 构造方法 c# 0106
  10. 为支持nginx高并发而修改的一些Linux内核参数
  11. Socket、send/recv的循环发送和接收、缓冲区、阻塞
  12. Atiitt 经济学体系树与知识点概念大总结attilax
  13. Monkey Test 命令使用
  14. 智齿徐懿 | 一个“外行”眼中的呼叫中心系统未来
  15. python爬取百度首页源代码并存储到HTML文件里
  16. ​机器如何“猜你喜欢”?深度学习模型在1688的应用实践
  17. 面试题:找出数列中间未排序好的子数列
  18. JavaScript - JS验证邮箱 ××× VISA 卡输入是否正确|正则表达式
  19. 在线接口Mock工具fastmock详解
  20. 创建Springboot项目、java项目遇到的问题

热门文章

  1. 安装centos linux7,安装centos7
  2. 查找php中的内容,如何通过PHP从内容中查找URL?
  3. 技术胖Flutter第四季-19导航父子页面的跳转返回
  4. python几个面试题整理
  5. py thon 多线程(转一篇好文章)
  6. 站立会议10--个人总结
  7. Ubuntu 14.04开启ssh服务
  8. HTTP(超文本传输协议)
  9. Error:To install them, you can run: npm install --save vue-style-loader css-loader……
  10. 计算机网络—时延相关真题练习(三)