在读源码框架时遇到方法中有这样的形参:{ message = 'ok' } = {}

有点懵为什么已经赋值了还又赋了一个空对象

随后我去看了阮一峰老师的 ECMAScript 6 入门才明白。这是参数默认值与解构赋值的默认值结合起来使用

如下列例子:

function foo({x, y = 5}:any){
console.log(x,y)
}
foo({}) //输出 undefined 5
foo({x:1}) // 输出 1 5
foo({x:1,y:2}) // 输出 1 2
foo() //报错 TypeError: Cannot destructure property 'x' of 'undefined' as it is undefined.

只有当函数foo传入的参数是一个对象时,会解构出x,y。否则会报错!当我们需要使用默认值时,必须传入一个空对象,否则就如同上面一样会报错。

那么如果想要实现不提供参数的情况下实现默认值,我们把foo函数修改成如下:

function foo({x,y = 5}:any ={}){
console.log(x,y)
}
foo() // 输出为 undefined 5

最新文章

  1. Shiro-集成Spring
  2. static{ }语句块详解
  3. iOS开发之网络编程--使用NSURLConnection实现文件上传
  4. C#常用工具类——Excel操作类
  5. JavaScript 工作必知(九)function 说起 闭包问题
  6. html5实现饼图和线图
  7. 一键保存网页为PDF
  8. flask开发用户管理系统wtf版
  9. 聊聊 JUC 并发包
  10. 使用第三方插件Gear Tacks 画齿轮
  11. 【洛谷p1162】填涂颜色
  12. Jboss项目部署出现java.lang.UnsupportedClassVersionError 问题的解决方法
  13. Go Slice 使用中的小陷阱
  14. python常用内建模块--collections
  15. Android 里的数据储存
  16. [Android] Java Basic : preview
  17. java封装实现Excel建表读写操作
  18. 二十一、MVC的WEB框架(Spring MVC)
  19. native和webview切换
  20. Node.js对MongoDB进行增删改查操作

热门文章

  1. 06 - Vue3 UI Framework - Dialog 组件
  2. [BUUCTF]REVERSE——[SUCTF2019]SignIn
  3. OpenWrt之DNS设置
  4. Jaeger知识点补充
  5. fcntl 加锁模块
  6. FastJsonHttpMessageConverter请求中参数序列化问题排查
  7. axios 高级封装
  8. MindSpore联邦学习框架解决行业级难题
  9. JAVA实现office文档(word、excel、ppt等)、压缩包在线预览,支持禁止下载功能、支持PC和手机
  10. 【LeetCode】344. Reverse String 解题报告(Java & Python)