JavaScript中的??和?.操作符

Posted IT小猿人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript中的??和?.操作符相关的知识,希望对你有一定的参考价值。

JS中两种不常使用但挺实用的操作符:??和?.

一起来了解并学会使用它们吧:

空值合并操作符:??

只有当操作符左侧为null或undefined时才会返回操作符右侧的值,否则返回左侧的值。

eg:

null ?? \'hello\';// hello

undefined ?? \'hello\';// hello

false ?? \'hello\';// false

null ?? undefined;// undefined

null ?? undefined ?? 123;// 123

可以用于程序中当某个值为null或undefined时给它赋默认值。

if表达式或者逻辑或||操作符也能实现这个赋默认值,区别于逻辑或操作符的是:逻辑或是当操作符左侧为假值(null、undefined、false、0、\'\'等等)时返回操作符右侧的值,否则返回左侧的值

null || \'hello\';// hello

false || \'hello\';// hello

0 || \'hello\';// hello

true || \'hello\';// true

 

可选链操作符:?.

var obj = {};console.log(obj.name.firstName);

这个情况下会出现报错:

这是程序中经常会遇见的报错,通常会在上面加一层if判断或者使用&&与操作符来处理这种异常

现在可以使用?.操作符来处理

var obj = {};console.log(obj.name?.firstName);// undefined

可选链?.操作符用于读取链中的属性值,而不必明确每个值都有效,区别于(.)操作符加了一层异常的处理,避免程序的报错和表达式的执行短路。

函数调用:obj.fn?.();// undefined

 

两个操作符结合使用:

var obj = {};

obj.name = obj?.name?.firstName ?? {firstName: \'hello\', lastName: \'world\'};

obj;// {name: {firstName: \'hello\', lastName: \'world\'}}

以上是关于JavaScript中的??和?.操作符的主要内容,如果未能解决你的问题,请参考以下文章

JavaS:网页中的显示和隐藏

javas cript入门要了解的知识和书籍

概念简介Javas cript简介

语法基础Javas cript变量的声明和使用

JavaScript 动态表格操作

javascript中的数据类型和变量