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

js 中 空值赋值运算符 的用法

**

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

**
含义解说 :
当空值赋值运算符 ??= ,
左侧的值为null、undefined的时候, 才会将右侧变量的值赋值给左侧变量。其他所有值都不会进行赋值。同样在一些场景下,可以省略很多代码. 即 xx ??= 00 ,也就是说xx 为null / undefined 时候 会把00 赋值给xx ,否则保留xx的本值。
上例子

let b = '你好';
let a = 0
let c = null;
let d = '123'
console.log(b ??= a,  b, a );  // b = “你好”,  你好, 0
console.log(c ??= d,c, d )  // c = '123' 123, 123

再看一个简单的例子

let a;
let b = "不知名前端"
let c = null;
let d = 0;
let e;
e ??= a?.b ?? c ?? d?.a ?? b;
console.log(e) // 不知名前端

为什么呢?
解说一下,此时a,e,c, 我们都知道 a,e 都是undefined,满足赋值右侧条件,但是右侧是个判断,所以要执行右边的判断赋值。

console.log(a?.b) // a为undefined 了,那后边的b 也就自然不存在了 结果就是 undefined

那么b下边的c 是啥呢 如果一致 用 ?. 那后边都是undefined。
但是变成了 ?? 此时就要 合并了,也就是把后边的结果给前边,此时的

e ??= a?.b ?? c 就为null了。

然而我们并没有结束 e ??= a?.b ?? c ?? d 此时我们把 d 的值拿来用了一下。e ??= a?.b ?? c ?? d 就为 0 了。

到这里的时候你该说这个时候e就为 0 了,后边的不用走了。
但是其实它又进行了执行结果

d?.a ;d下边没有这个a属性和值,此时 结果就是undefined

这就又回到了最初的时候 null / undefined
那么 e ??= a?.b ?? c ?? d?.a ?? b; 的值就是 b 的值
你彻底理解了吧。

相关文章:

  • node学习系列之简单文件上传
  • 前端 关于汇率的计算
  • mongoDB 文档查询
  • 安装了python报错 或者执行 npm install 时报node-sass的各种相关错误 解决办法
  • 今天打开一个网站 FSO对象实例创建失败
  • 【LeetCode】5. Longest Palindromic Substring 最大回文子串
  • vu2响应式原理 代码分析
  • 希尔排序
  • vu3响应式原理 代码分析
  • Java Tomcat SSL 服务端/客户端双向认证(一)
  • vue3中 setup注意点
  • redis简介
  • 《Spark GraphX in Action》书评及作者访谈
  • vue3的 computed 计算属性 与 watch监听
  • Diomidis Spinellis:有效的调试
  • Codepen 每日精选(2018-3-25)
  • echarts的各种常用效果展示
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • laravel with 查询列表限制条数
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Solarized Scheme
  • Spring核心 Bean的高级装配
  • Vue2.x学习三:事件处理生命周期钩子
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 坑!为什么View.startAnimation不起作用?
  • 浅谈Golang中select的用法
  • 世界上最简单的无等待算法(getAndIncrement)
  • 王永庆:技术创新改变教育未来
  • 网络应用优化——时延与带宽
  • 微信支付JSAPI,实测!终极方案
  • 小程序01:wepy框架整合iview webapp UI
  • 小程序开发中的那些坑
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​第20课 在Android Native开发中加入新的C++类
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • ​用户画像从0到100的构建思路
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (10)STL算法之搜索(二) 二分查找
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (二十四)Flask之flask-session组件
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (转)JAVA中的堆栈
  • (转)nsfocus-绿盟科技笔试题目
  • .NET CLR Hosting 简介
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 中的轻量级线程安全
  • .net的socket示例
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • :“Failed to access IIS metabase”解决方法
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149