【JS】中 ?.、??、??= 的用法和含义

news/2025/2/5 8:03:58/

今天分享几个处理空值简单的方法,避免使用三目运算、与或、if else时增加冗余的代,希望对大家有帮助。

 可选链(?.)

let a;
let b = a.?age;

含义:

可选链,只有当a存在,同时 a 具有 age 属性的时候,才会把值赋给b,否则就会将 undefined 赋值给 b,重要的是,不管a存在与否,a.?age 都不会报错。

示例:

不使用( ?. )时:

如果一个值为null、或者是undefined.那么我们再去用点操作符去调用一个方法或者访问一个属性会发生什么?

let a;
let b = a.age;

 运行代码,就会得到一个报错;

 使用( ?. )时:

let a;
let b = a?.age;

运行代码,打印出一个 undefined ;

空值合并运算符(??)

let a;
let b=a??c;

含义:

空值合并运算符(??) ,如果 a 不为 undefined、或者null ,那么 将会把a 赋值给 b ,如果a 为 undefined、或者null,那么就会把 c 赋值给 b。

示例:

不使用( ?? )

var u_defaultValueIfUndfined = function (value, defaultValue) {if (typeof value == "undefined" || value == null) {return defaultValue;}return value;
};
let a;
let c=1;  // []、0、“字符串” 等均可
let b =  u_defaultValueIfUndfined(a,c);

使用( ??)

let a;
let c=1;  // []、0、“字符串” 等均可
let b=a ?? c;

 上方两个代码示例效果一样;

空值赋值运算符(??=)

b ??= a;

和上面的( ?? )例子类似

含义: 

 当 ??= 左侧的值为 null 、undefined 的时候,才会将右侧变量的值赋值给左侧变量,其他所有值都不会进行赋值.同样在一些场景下,可以省略很多代码。

示例:

let b = '你好';
let a = 0
let c = null;
let d = ’123‘
b ??= a;  // b = “你好”
c ??= d  // c = '123'

 运行代码,结果如下:

 

好了,今天的分享就到这里啦,欢迎交流!


http://www.ppmy.cn/news/432696.html

相关文章

用户注册文件register.html的编写

程序要求&#xff1a;写一个用户注册文件register.html&#xff0c;运行结果如下&#xff1a; (15分) 程序代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>会员注册页面&#xff1a;register.html</…

Oracle Database 11g安装时显示[INS-13001]环境不满足最低要求。

泻水置平地&#xff0c;各自东西南北流。 报错内容&#xff1a; Oracle Database 11g安装时显示[INS-13001]环境不满足最低要求。 解决办法&#xff1a; 1、依次打开database目录下的stage文件夹-cvu文件夹&#xff0c;在cvu文件夹中找到cvu_prereq文件 并用记事本或其他编辑器…

爬虫---ins注册脚本

访问这个网站首先要解决qiang的问题&#xff0c;这里就跳过了 重点&#xff1a; 1、该网站手机号可以重复注册&#xff0c;但是应该有一个预警机制&#xff0c;将失效的账号以邮件的方式发出来 2、爬取该网站最好尽量多的备手机号&#xff0c;100往上最好 3、如果手动注册最…

win10系统安装Oracle 11g时遇到[INS-13001]环境不满足最低要求解决办法

遇到的问题&#xff1a; 在win10环境下安装Oracle 11g时&#xff0c;在安装点击setup.exe之后&#xff0c;出现了&#xff1a;[INS-13001]环境不满足最低要求 原因&#xff1a; 版本注册的问题&#xff0c;默认Oracle 11没有添加win10的注册信息&#xff0c;所以要将win10的注…

INS-13001环境不满足最低要求

安装oracle11g时遇到INS-13001环境不满足最低要求 原因&#xff1a;版本注册问题&#xff0c;默认oracle 11没有添加win10的注册信息&#xff0c;所以要在win10的注册信息添加到oracle的配置文件里 解决方法&#xff1a; 1 找到你解压后的文件&#xff0c;点击打开database文件…

[INS-32025] 所选安装与指定 Oracle 主目录中已安装的软件冲突

今天 重装oracle的时候遇见了这个问题&#xff0c;试过好多种方法&#xff0c; 最后我的解决方法是&#xff1a;不要在安装包所在的路径安装oracle&#xff0c; 也就是安装路径和安装包不能再一个路径下。

原生js验证简洁美观注册登录页面

本文转载自&#xff1a; https://www.cnblogs.com/storm-chou/p/6189489.html 作者&#xff1a;storm-chou 转载请注明该声明。 序 一个以js验证表单的简洁的注册登录页面&#xff0c;不多说直接上图 效果 主要文件 完整代码 1 sign_up.html 注册表单 <!DOCTYPE html>…

html登录注册页面本地验证,原生js验证简洁注册登录页面

序 一个以js验证表单的简洁的注册登录页面,不多说直接上图 效果 主要文件 完整代码 1 sign_up.html 注册表单sign-up 创建账户 已经拥有账户? 登录 2 log_in.html 登录表单log-in