JavaScript基础语法之 || 和 ?? 的踩坑记录

这篇具有很好参考价值的文章主要介绍了JavaScript基础语法之 || 和 ?? 的踩坑记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在前端开发过程中,我们在设置默认值的时候,会经常用到 || 和 ?? , 但是这两者有什么区别呢?分别在什么场景下面使用呢,会有哪些坑呢,今天我们来梳理下呢。

|| 的语法作用

console.log(null || 1)                //输出 1
console.log(undefined || 1)       //输出1     
console.log(0 || 1)                   //输出1 
console.log('' || 1)                   //输出1 
console.log(1 || null)               //输出1 
console.log(undefined || '')      //输出''
console.log(undefined || 0)      //输出0
console.log(undefined || null)   //输出null
console.log(null || undefined)   //输出undefined
console.log('' || undefined)   //输出undefined
console.log(0 || undefined)   //输出undefined

在这里可以看出,使用 || 的时候,当第一个值为非0非null非''非undefined的时候,优先取第一个值,而当第一个值是0或''或null或undefined的时候,则优先取第二个参数的值。

?? 的语法作用

console.log(null ?? 1)                //输出 1
console.log(undefined ?? 1)       //输出1     
console.log(0 ?? 1)                   //输出0 
console.log('' ?? 1)                   //输出'' 
console.log(1 ?? null)               //输出1 
console.log(undefined ?? '')      //输出''
console.log(undefined ?? 0)      //输出0
console.log(undefined ?? null)   //输出null
console.log(null ?? undefined)   //输出undefined
console.log('' ?? undefined)   //输出''
console.log(0 ?? undefined)   //输出0

在这里可以看出,使用 ?? 的时候,当第一个值为非null非undefined的时候,优先取第一个值,而当第一个值是null或undefined的时候,则优先取第二个参数的值。

|| 和 ?? 的对比总结

对比 || 和 ??后,发现 || 的处理是针对于0或空或null或undefined都去获取后面的默认值,而??则是针对于null或undefined的时候,去获取后面的默认值,则对应的场景如下:文章来源地址https://www.toymoban.com/news/detail-457152.html

  1. 当一个变量值可能为空0或者''的时候,希望最后展示的是默认值的时候,则只能使用 || 来处理
  2. 当一个变量值可能为null或undefined的时候,希望最后展示的是默认值的时候,则优先使用 ?? 来处理

到了这里,关于JavaScript基础语法之 || 和 ?? 的踩坑记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 前端学习笔记:JavaScript基础语法(ECMAScript)

    此博客参考b站:【黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程】https://www.bilibili.com/video/BV1Y84y1L7Nn?p=76vd_source=06e5549bf018e111f4275c259292d0da 这份笔记适用于已经学过一门编程语言(最好是C语言)的同学,如果你没有

    2024年02月16日
    浏览(40)
  • 【el-upload】批量上传图片时在before-upload中添加弹窗判断时的踩坑记录

    上传文件前判断是否是pdf文件,如果是则弹出如下是否增加水印提示框 批量选择文件,碰到pdf文件,依次弹出如上提示框 若勾选了为后续pdf文件执行相同操作,则不再弹出如上提示框 若选择的文件中只有一个pdf文件,则不显示提示框中的复选框和“为后续pdf文件执行相同操

    2024年02月13日
    浏览(34)
  • gitlab配置使用ssh(clone)拉取项目失败的踩坑排查记录(配置了SSHkey仍然不能正常拉取代码)

    说起这个由来有一点尴尬,以前公司使用svn,使用git不多,后来由于项目管理和人员协作的需要开始使用git作为项目版本管理,以前的项目管理感觉比较混乱,所以就搭建了gitlab,gitlab-runner来作为项目管理,项目版本管理和自动化部署CICD,这样也确实提高了效率,但是呢,由

    2024年02月13日
    浏览(42)
  • ECMAScript6历史-前端开发+ECMAScript+基础语法+入门教程

    我们首先来看 ECMA 是什么。 ECMA ,读音类似“埃科妈”,是 欧洲计算机制造商协会 (European Computer Manufacturers Association)的简称,是一家国际性会员制度的信息和电信标准组织。1994年之后,由于组织的标准牵涉到很多其他国家,为了体现其国际性,更名为 Ecma 国际 (Ecma In

    2024年01月16日
    浏览(43)
  • JavaScript创建二维数组踩坑记录

    1、 今天刷Leetcode时,遇见一个这样的需求,机智如我,定然不会通过双重for循环来创建,于是,我写了这样一行代码 const dimensionalArray = new Array(m).fill(new Array(n).fill(0)); 乍一看没有问题,但在修改数组里的值时,问题就暴露出来了 可以看到,我明明只打算修改一个数组元素,

    2024年02月08日
    浏览(27)
  • python 安装openai的踩坑史

    注意,一定要python的版本 一定要 3.9及以下!! 否则一直会出错 出错 ImportError: cannot import name ‘COMMON_SAFE_ASCII_CHARACTERS’ from ‘charset_normalizer.constant’ (D:anaconda3envsAIGClibsite-packagescharset_normalizerconstant.py) 用 都不管用 最好python=3.8 否则openai的有些库不能用 又是出错 这时候

    2024年02月07日
    浏览(34)
  • es的must_not的踩坑

    记录下在公司做需求时must_not踩的坑 要去做人才库的一个排除项:排除x个月面试不通过。实际上的dsl语句则对应的是must_not。且内部要包含两个元素:x个月、面试不通过(C、D)取交集。 目标测试数据为: 这是一条面试时间为10.21、且面评不合格的一条数据。 一开始拼接的

    2024年01月17日
    浏览(38)
  • Android CameraX适配Android13的踩坑之路

    最近把AGP插件升级到8.1.0,新建项目的时候目标版本和编译版本都是33,发现之前的demo使用Camerax拍照和录像都失败了,于是查看了一下官网和各种资料,找到了Android13的适配方案. 与早期版本一样,Android 13 包含一些行为变更,这些变更可能会影响您的应用。以下行为变更仅影

    2024年02月12日
    浏览(67)
  • Jenkins安装和卸载教程以及我的踩坑经验

    ##本文主要用于记录本人的一个安装Jenkins的一个过程 前言:这里主要记录在Linux的安装方式。安装方式有两种,一种在线yum安装,一种离线安装。网上的在线安装过程资料太多了就不说这种了,这里采用安装包的方式安装。 1)下载OpenJDK-11,11比较能够兼容jenkins的大多数版本

    2024年02月08日
    浏览(70)
  • 前端(三)React踩坑记录

            作者最近新的平台项目是需要用react的,和vue区别还是比较大的,这里记录下踩坑和使用经验。         框架:antd         依赖:         不知道是react本身编译规则严苛,还是公司的pipline设定,代码里面编译的时候不允许有未使用的变量,不允许使用未导入的组

    2024年04月24日
    浏览(24)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包