首页 > 编程语言 >【面试题】 JavaScript中高级语法--?? 表达式 的作用

【面试题】 JavaScript中高级语法--?? 表达式 的作用

时间:2023-08-12 11:08:00浏览次数:44  
标签:面试题 undefined -- defaultValue JavaScript value null 表达式 问号


前言

JavaScript中,双问号(??)表达式是一种非常有用的方法。它的作用是用来检测一个值是否为nullundefined。如果该值为nullundefined,那么双问号表达式会返回一个默认值。

下面我们就来具体探究一下双问号表达式的用法,以及它与其他相似方法的区别。

具体用法。

其实,双问号表达式就是一个三目运算符的简化写法,如下所示:

const result = value !== undefined && value !== null ? value : defaultValue;

在上面的表达式中,我们检测了value 是否等于undefinednull,如果不等于,我们返回value本身。

否则,我们返回一个默认值defaultValue。这种写法虽然功能简单,但是有着很多的重复代码,不利于代码的维护和可读性。

因此,双问号表达式的出现就解决了这个问题。双问号表达式的语法结构如下:

const result = value ?? defaultValue;

这行代码的意思是:如果value的值为nullundefined,那么返回defaultValue;否则返回value的值本身。使用双问号表达式,代码看起来就简洁明了。

那么双问号表达式和其他的相似方法有什么不同呢?

其实,JavaScript中还有一种方法也能实现双问号表达式的效果——逻辑或操作符(||)。例如:

const result = value || defaultValue;

这段代码的含义和前面的代码是相同的。其中,||操作符的原理是:如果第一个操作数为真,则返回第一个操作数的值;否则返回第二个操作数的值。这里的包括了所有不为null、undefined、false、0、空字符串的值。

因此,如果value的值是nullundefined,那么返回的就是defaultValue

那么二者之间有什么明显的区别呢?

双问号表达式和||操作符最重要的区别在于空字符串的处理方式。

在使用||操作符时,如果value是空字符串(""),那么返回的值也是defaultValue。但是在使用双问号表达式时,如果value是空字符串,那么返回的就是空字符串本身。

这种区别可能对于某些特定的应用场景非常重要,因此,我们需要根据实际情况选择不同的方法。

总结

双问号表达式是一种非常实用的方法,在JavaScript中得到了广泛的应用。它的语法简洁明了,代码可读性强,特别是在处理nullundefined的情况下,能够大大简化代码。然而,在具体应用时我们也需要注意与其他方法的区别,根据实际情况选择最适合的方法。


标签:面试题,undefined,--,defaultValue,JavaScript,value,null,表达式,问号
From: https://blog.51cto.com/u_14627797/7056841

相关文章

  • RN 使用react-navigation写可以滚动的横向导航条(expo项目)
     装包:yarnadd@react-navigation/material-top-tabsreact-native-tab-view npxexpoinstallreact-native-pager-view  importReactfrom'react'import{View,Text,ScrollView,SafeAreaView}from'react-native'import{Icon}from'.......
  • github 无语的问题,Host does not existfatal: Could not read from remote repository
    Unabletoopenconnection:Hostdoesnotexistfatal:Couldnotreadfromremoterepository.image.pngimage.pngimage.pngPleasemakesureyouhavethecorrectaccessrightsandtherepositoryexists.如果githubdesktop和gitpu......
  • js对图片进行压缩,并上传
    注意:重点关注这几个js方法:1、递归压缩文件: doCompressImage()2、具体的图片文件压缩方法:compressImage()3、将Blob 转换为base64:blobToBase64()以下代码,可以直接拷进html文件中,在浏览器打开即可看到效果。(以下代码是h5)<!DOCTYPEhtml><htmllang="en"><head><metacha......
  • Java源码解析-重点集合框架篇
    Java源码解析,集合篇一:故事背景二:数据结构2.1线性结构2.2非线性结构三:集合分类3.1结构图四:详细分析4.1List4.1.1ArrayList4.1.1.1底层结构4.1.1.2主要特点4.1.2LinkedList4.1.2.1底层结构4.1.2.2主要特点4.1.3Vector和Stack4.1.3.1Vector4.1.3.1Stack五:总结提升一:故......
  • 纯函数
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语纯函数编辑代码部分//函数的返回结果只......
  • 欢迎大家加入JAVA技术开发讨论
    最近加了一些java的开发群,感觉每个群的技术氛围都不浓厚,很多问题出来后,根本没人理会。想现在建立一个技术氛围浓厚的java技术问答群,欢迎有兴趣的同学加入。近期也汇总了一些觉得不错的资料,欢迎大家一起进步学习!注:本群不收费,也不做广告推广,仅技术交流。加群方式:点击链接获......
  • threeJs绘制曲线,
    之前有讲过用three绘制直线,但是很多时候的也需要绘制曲线,这节就展示怎么用threejs绘制一条曲线,所用到的是组件CatmullRomCurve3,它实实质上是两点之间取多个点,然后用多条直线连接起来,当直线数量多,且角度不一样时,就形成了平滑的曲线,这里的曲线不是贝塞尔曲线,只是将多个点连接起来的曲......
  • Vue中实现矩形和虚线的分离
    要在Vue中实现矩形和虚线的分离,你可以使用Vue的模板语法和样式绑定来实现。下面是一个示例代码,展示了如何使用Vue实现一个具有矩形和虚线的分离效果:<!DOCTYPEhtml><html><head><title>矩形和虚线分离</title><style>.rectangle{width:200px;......
  • 什么是Shell,初识Shell脚本Shell编程,shell介绍,Linux
    脚本脚本就是批处理平常一个命令不能完成的任务,写到一个文件当中,有多个命令按照一定的逻辑来进行编写编写完后去执行这个文件,随后他就会按照流程多个命令,多个语句,达到批处理的一个任务shell 系统分成了三层第一层是kernel(内核)内核是操作系统的核心,主要负责1管理硬件,电脑cpu是什么......
  • Linux下C语言调用libcurl库下载文件到本地
    一、项目介绍当前文章介绍如何使用C语言调用libcurl库在Linux(Ubuntu)操作系统下实现网络文件下载功能。libcurl是一个开源的跨平台网络传输库,用于在C和C++等编程语言中实现各种网络通信协议的客户端功能。它支持多种协议,包括HTTP、HTTPS、FTP、SMTP、POP3等,可以方便地进行数据的上传......