码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • ES6---几个优雅的运算符使用技巧(?. ??= ||= &&=)


    目录

    1. 使用可选链式调用

    2. 逻辑空分配(?? =)

    3. 逻辑或分配(|| =)

    4. 逻辑与分配(&& =)


    1. 使用可选链式调用

    1. // 原始js判断非空操作
    2. // 判断糅杂,不易书写
    3. if (data && data.children && data.children[0] && data.children[0].title) {
    4. // I have a title!
    5. }
    1. let object = {name:'Lily',age:20}
    2. // 对于静态的属性调用
    3. object?.name // Lily
    4. object?.address // undefined
    5. // 对于动态的属性调用 (variable 是动态变量)
    6. object?.[variable] // 不存在:undefined
    7. // 动态属性:另一个例子
    8. let data;
    9. console.log(data?.children?.[0]?.title) // undefined
    10. data = {children: [{title:'codercao'}]}
    11. console.log(data?.children?.[0]?.title) // codercao
    12. // 方法调用
    13. object.runsOnlyIfMethodExists?.()
    14. object.getTeacherList?.()
    15. ----------------------------------------------------
    16. // 使用??运算符 搭配使用
    17. console.log(undefined ?? 'codercao'); // codercao
    18. let arr = object?.list ?? [] // []

    2. 逻辑空分配(?? =)

    expr1 ??= expr2

    逻辑空值运算符仅在 nullish 值(null 或者 undefined)时才将值分配给 expr1

    1. 空的合并运算符(??)从左到右操作,如果 x 不为 nullish 值则中表达式不执行。
    2. 因此,如果 x 不为null 或者 undefined,则永远不会对表达式y进行求值。
    3. 如果y是一个函数,它将根本不会被调用。因此,此逻辑赋值运算符等效于
    4. x ?? (x = y);

    3. 逻辑或分配(|| =)

    此逻辑赋值运算符仅在左侧表达式为 falsy 值(虚值) 时才赋值。Falsy 值(虚值)与 null 有所不同,因为 falsy 值(虚值)可以是任何一种值:undefined,null,空字符串 (双引号 ""、单引号’’、反引号 ``),NaN,0。IE 浏览器中的 document.all,也算是一个。

     

    1. x ||= y 等价于 x || x = y
    2. // 举例如下:
    3. document.getElementById('search').innerHTML ||= 'No posts found matching this search.'
    4. 等价于:
    5. document.getElementById('search').innerHTML ||
    6. document.getElementById('search').innerHTML = 'No posts found matching this search.'

    4. 逻辑与分配(&& =)

    此逻辑赋值运算符仅在左侧为真时才赋值

     

    x &&= y  等价于 x && (x = y)

  • 相关阅读:
    最后一块石头的重量 II
    java Socket
    K8S部署dashboard
    【Git】如何在微信小程序中使用码云(Gitee)实现远程代码仓库与本地同步?(新手图文教程)
    k8s笔记资源限制,亲和和性 污点和容忍
    sizeof和strlen求取数组&指针之辨析
    golang的垃圾回收算法之十一Stack的处理
    Linux系统中让$前面显示完整的路径
    SQL注入漏洞解析-less-8(布尔盲注)
    传统Tier1「杀红眼」!Mobileye阵营寻求「强化」感知能力
  • 原文地址:https://blog.csdn.net/COCOLI_BK/article/details/126851241
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号