关于js默认值

本文探讨了JavaScript中设置默认值的几种方法,包括逻辑运算符||,解构赋值,函数默认参数以及新引入的Null判断运算符??。在处理可能为falsey值(如false, null, NaN, 0, 空字符串)时,||运算符可能导致意外的结果,而??运算符则只在值为null或undefined时才应用默认值。函数默认参数在ES6后引入,避免了旧方法可能导致的问题。理解这些策略能帮助开发者更准确地设定和处理默认值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

falsy情况

在这里插入图片描述

1. || 判断符:

var {a = 10, b = 5} = {a: 3};

变量可以先赋予默认值。当要提取的对象对应属性解析为 undefined,变量就被赋予默认值。

问题:但是当属性值为false,null,NaN,0,空字符串的时候,将不会使用默认值

解决方法:使用“ || ”

c= a || b
  • 它不仅是逻辑操作符还是选择符
  • 当a的布尔值为false的时候c=b,
  • 即boole(a)=false,undefined, null,NaN,0,空字符串时
  • 配合链判断运算符?.使用
    • 如果读取对象内部的某个属性,往往需要判断一下该对象是否存在
    • 可选链操作符不会造成报错,在属性不存在的情况下,会返回undefined
const firstName = message?.body?.user?.firstName || 'default';

2. 函数默认值

ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。

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

上面代码检查函数log()的参数y有没有赋值,如果没有,则指定默认值为World。这种写法的缺点在于,如果参数y赋值了,但是对应的布尔值为false,则该赋值不起作用。就像上面代码的最后一行,参数y等于空字符,结果被改为默认值
ES6 之后,函数默认参数允许在没有值或undefined被传入时使用默认形参。

function multiply(a, b = 1) {
  return a * b;
}

3. Null 判断运算符??

通过||运算符指定默认值,null或undefined,默认值就会生效,但是属性的值如果为空字符串或false或0,默认值也会生效。
,ES2020 引入了一个新的 Null 判断运算符??。它的行为类似||,但是只有运算符左侧的值为null或undefined时,才会返回右侧的值

4. 总结

方法默认值何时生效
||boole值为false
解构赋值默认值使用严格相等运算符(===),判断一个位置是否有值。所以,只有当一个数组成员严格等于undefined,默认值才会生效
函数默认值typeof == undefined 空字符串 没有值
??null或undefined

5. 参考链接:

https://es6.ruanyifeng.com/#docs/function
https://www.samanthaming.com/tidbits/52-3-ways-to-set-default-value/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值