ES6中Null判断运算符(??)正确打开方式-

这篇具有很好参考价值的文章主要介绍了ES6中Null判断运算符(??)正确打开方式-。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读取对象属性的时候,如果某个属性的值是null或者undefined,有时候需要为它们指定默认值。常见的作法是通过||运算符指定默认值。

const headerText = response.settings.headerText || 'Hello, world!';
const animationDuration = response.settings.animationDuration || 300;
const showSplashScreen = response.settings.showSplashScreen || true;

上面的三行代码都是通过||运算符指定默认值,但是这样写是错的。我们这样写的意愿一般是,只要属性的值为null或者undefined,默认值就会生效。但是属性的值如果是空字符串或者false或者0,默认值也会生效

为了避免这种情况,ES2020引入了一个新的Null判断运算符??。它的行为类似于||,但是只有运算符左侧的值为null或者undefined时,才会返回右侧的值。

const headerText = response.settings.headerText ?? 'Hello, world!';
const animationDuration = response.settings.animationDuration ?? 300;
const showSplashScreen = response.settings.showSplashScreen ?? true;

上面代码中,默认值只有左侧属性值为null或者undefined时,才会生效

这个运算符的一个目的,就是跟链判断符?.配合使用,为null或者undefined的值设置默认值

const value = respons.setting?.value ?? 300

上面的代码中,如果response.setting时null或者undefined,或者response.setting.value是null或者undefined,就会返回默认值300。也就是说,这一行代码包括了两级属性的判断

这个运算符很适合判断函数参数使得否赋值

function Component(props){
    const enabled = props.enabled ?? true
    // ...
}

上面的代码判断props参数enabled属性是否赋值,基本等同于下面的写法

function Component(props){
    const { enabled:enable=true} = props
    // ....
}

?? 本质上是逻辑运算,它与其他两个逻辑运算符&&和||有一个优先级问题,它们之间的优先级到底谁高谁低。优先级的不同,往往会导致逻辑运算结果不同。

现在的规则是,如果多个运算符一起使用,必须用括号表明优先级,否则会报错

// 报错
lhs && middle ?? rhs
lhs ?? middle && rhs
lhs || middle ?? rhs
lhs ?? middle || rhs

上面四个表达式都会报错,必须加入标明优先级的括号文章来源地址https://www.toymoban.com/news/detail-636936.html

(lhs && middle) ?? rhs;
lhs && (middle ?? rhs);

(lhs ?? middle) && rhs;
lhs ?? (middle && rhs);

(lhs || middle) ?? rhs;
lhs || (middle ?? rhs);

(lhs ?? middle) || rhs;
lhs ?? (middle || rhs);

到了这里,关于ES6中Null判断运算符(??)正确打开方式-的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • es6的语法糖,展开运算符,类的实现

          对象存在键值对,如果需要解构对象,你需要使用对象的键名为变量名     字符串的展开   数组的展开   对象的展开 对象 的简明写法1: 对象 的简明写法2: 具有相同特征的一类事物的抽象 1、使用class 2、类的动态属性定义在构造器中(constructor),如果没有定义

    2024年02月02日
    浏览(25)
  • vue对象复制(使用es6对象扩展运算符,深拷贝)

    vue3+es6语法 直接上代码

    2024年02月16日
    浏览(41)
  • ES6 全详解 let 、 const 、解构赋值、剩余运算符、函数默认参数、扩展运算符、箭头函数、新增方法,promise、Set、class等等

    ​ ECMAScript 6.0,简称 ES6,是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言 要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaSc

    2024年04月15日
    浏览(38)
  • 如何使用SQL系列 之 如何在SQL中使用比较运算符和IS NULL运算符

    在某些 结构化查询语言 (SQL)语句中, WHERE 子句可以用来限制给定操作会影响哪些行。他们通过定义特定的条件来做到这一点,这些条件被称为 搜索条件 ,每一行必须满足才会受到影响。搜索条件由一个或多个 谓词 组成,它们是特殊的表达式,计算结果为“true”、“false”

    2024年02月10日
    浏览(34)
  • js多目运算符的判断写法

    1、两目运算 2、三目运算

    2024年02月08日
    浏览(33)
  • shell脚本中的运算符和条件判断

    在Shell脚本中,你可以使用各种运算符来执行数学运算、比较和逻辑操作。 计算方式: $[ ] $(( )) 例: a= $[(9+5) 90] 打印输出结果 == echo $a test $a = 90 [ $a = 90 ] 注意事项: 判断处理中间空格隔开 关系运算符: -eq 等于 -lt 小于 -gt 大于 -ne 不等于 -le 小于等于 -ge 大于等于 文件类型

    2024年04月17日
    浏览(35)
  • 从零开始探索C语言(三)----运算符和判断语句

    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。 C 语言内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 实例 当上面的代码被编译和执行时,它会产生下列结果: 以下实例演示了 a++ 与

    2024年02月10日
    浏览(29)
  • 【Python入门】Python的判断语句(布尔类型和比较运算符)

    前言 📕作者简介: 热爱跑步的恒川 ,致力于C/C++、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函数、函数进阶、数据容器、文件操作、异常模块与包、数据可视化等,

    2024年02月03日
    浏览(41)
  • Linux【实操篇】—— Shell 编程入门、变量、运算符、条件判断、流程控制

    目录 一、Shell 编程入门 1. 认识 Shell 2. Shell 脚本的创建与执行         二、Shell 变量 1. 系统变量和自定义变量 2. 变量的基本规则 3. 设置环境变量 4. 位置参数变量 5. 预定义变量 三、运算符 四、条件判断 五、流程控制 1. if 语句 2. case 语句 3. for 循环 4. while 循环 六、rea

    2024年02月03日
    浏览(31)
  • 【m_listCtrl !=NULL有多个运算符与操作数匹配】2023/9/21 上午11:03:44

    2023/9/21 上午11:03:44 m_listCtrl !=NULL有多个运算符与操作数匹配 2023/9/21 上午11:04:00 如果您在编译或运行代码时遇到\\\"M_listCtrl != NULL有多个运算符与操作数匹配\\\"的错误提示,这通常是由于以下几个原因之一: 错误使用运算符:在条件判断语句中,应该使用双等号(==)进行相等性比

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包