当前位置: 首页 > news >正文

【es6】函数参数设置默认值

1、es6之前的函数参数默认值写法

1.1、使用短路或||的写法

  • 当y为空时,y判断为false ,走||右边的,所以y = 'world';
  • 当y不为空时,y判断为true,不需要再运行||右边的,所以 y = y
function log(x, y) {y = y || 'World';console.log(x, y);
}log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello World

这中写法有个问题,就是第三种输出中的结果。当y值设置为“”时,走短路与运算判断为false,从而将默认值赋予了y。但是原本的意思是y的值就是“”,从而希望输出的是 Hello

1.2 添加typeof 判断是否为undefined

function log(x, y) {if (typeof y === 'undefined') {y = 'World';}console.log(x, y);
}log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello 

这种写法可以避免1.1中y值为空串的情况。

2、es6写法

function log(x, y = 'World') {console.log(x, y);
}log('Hello') // Hello World
log('Hello', 'China') // Hello China
log('Hello', '') // Hello

上面是es6的写法,简单方便。

下面是解构赋值和函数默认值结合:

方法一是个解构变量设置默认值,二默认值生效的条件是对象属性值严格等于undefined。
方法二是设置对象的值,没有设置解构变量的默认值。
在没有参数和x y都有值的情况下,两者的结果一样。其他情况下两者有区别。

// 写法一
function m1({x = 0, y = 0} = {}) {return [x, y];
}// 写法二
function m2({x, y} = { x: 0, y: 0 }) {return [x, y];
}// 函数没有参数的情况
m1() // [0, 0]
m2() // [0, 0]// x 和 y 都有值的情况
m1({x: 3, y: 8}) // [3, 8]
m2({x: 3, y: 8}) // [3, 8]// x 有值,y 无值的情况
m1({x: 3}) // [3, 0]
m2({x: 3}) // [3, undefined]// x 和 y 都无值的情况
m1({}) // [0, 0];
m2({}) // [undefined, undefined]m1({z: 3}) // [0, 0]
m2({z: 3}) // [undefined, undefined]
http://www.lryc.cn/news/129329.html

相关文章:

  • Pytest和Unittest测试框架的区别?
  • C#基础知识(一)
  • 我还不知道?Android组件化插件化模块化
  • 借助 AI 工具,真的能成为 10x 工程师?
  • TypeScript 面向对象
  • k8s 中快速启动curl pod 做api test
  • 神经网络基础-神经网络补充概念-56-迁移学习
  • 力扣:65. 有效数字(Python3)
  • 003-Spring boot 启动流程分析
  • 中间件的介绍
  • LVS-DR模式下(RS检测)ldirectord工具实现部分节点掉点后将请求发往正常设备进行处理
  • c++游戏制作指南(四):c++实现数据的存储和读取(输入流fstream)
  • 如何使用CSS实现一个响应式视频播放器?
  • Typora上传文件到Gitee
  • 系统架构设计师---2017年下午试题1分析与解答(试题三)
  • 从零搭建vue + element-plus 项目
  • 原码、补码、反码
  • 煤矿调度IP语音对讲广播模块一键求助对讲矿用调度通信系统SIP语音对讲求助终端
  • 堆 和 优先级队列(超详细讲解,就怕你学不会)
  • AIGC绘画:基于Stable Diffusion进行AI绘图
  • python实现对Android系统手机亮度的调节
  • 《论文阅读14》FAST-LIO
  • Kotlin CompletableDeferred 入门
  • stm32g070的PD0/PD2 PA8和PB15
  • 【数据结构】 链表简介与单链表的实现
  • 【Leetcode】98. 验证二叉搜索树
  • ViewFs And Federation On HDFS
  • 每日一学——无线基础知识
  • 【腾讯云 Cloud Studio 实战训练营】在线 IDE 编写 canvas 转换黑白风格头像
  • 【Hystrix技术指南】(7)故障切换的运作流程原理分析(含源码)