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

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

前言

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的情况下,能够大大简化代码。然而,在具体应用时我们也需要注意与其他方法的区别,根据实际情况选择最适合的方法。

前端面试题库 (面试必备)            推荐:★★★★★

地址:前端面试题库

相关文章
|
JavaScript 前端开发 开发者
JavaScript中的箭头函数:简洁的语法与this绑定
JavaScript中的箭头函数:简洁的语法与this绑定
602 184
|
存储 JavaScript 前端开发
Node.js的基本语法
【8月更文挑战第12天】Node.js的基本语法
1171 1
|
JSON 前端开发 Serverless
Mock.js 语法结构全解析
Mock.js 的语法规范介绍,从数据模板定义规范和数据占位符定义规范俩部分介绍, 让你更好的使用 Mock.js 来模拟数据并提高开发效率。
|
缓存 安全 Java
java面试-基础语法与面向对象
本文介绍了 Java 编程中的几个核心概念。首先,详细区分了方法重载与重写的定义、发生阶段及规则;其次,分析了 `==` 与 `equals` 的区别,强调了基本类型和引用类型的比较方式;接着,对比了 `String`、`StringBuilder` 和 `StringBuffer` 的特性,包括线程安全性和性能差异;最后,讲解了 Java 异常机制,包括自定义异常的实现以及常见非检查异常的类型。这些内容对理解 Java 面向对象编程和实际开发问题解决具有重要意义。
|
编译器 Android开发 开发者
Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
Lambda表达式和匿名函数都是Kotlin中强大的特性,帮助开发者编写简洁而高效的代码。理解它们的区别和适用场景,有助于选择最合适的方式来解决问题。希望本文的详细讲解和示例能够帮助你在Kotlin开发中更好地运用这些特性。
503 9
|
消息中间件 Java 编译器
面试官:说说Lambda表达式底层原理?
面试官:说说Lambda表达式底层原理?
350 3
面试官:说说Lambda表达式底层原理?
|
JavaScript 前端开发
JavaScript基础&实战(1)js的基本语法、标识符、数据类型
这篇文章是JavaScript基础与实战教程的第一部分,涵盖了JavaScript的基本语法、标识符、数据类型以及如何进行强制类型转换,通过代码示例介绍了JS的输出语句、编写位置和数据类型转换方法。
JavaScript基础&实战(1)js的基本语法、标识符、数据类型
|
JavaScript 前端开发
JavaScript 函数语法
JavaScript 函数是使用 `function` 关键词定义的代码块,可在调用时执行特定任务。函数可以无参或带参,参数用于传递值并在函数内部使用。函数调用可在事件触发时进行,如用户点击按钮。JavaScript 对大小写敏感,函数名和关键词必须严格匹配。示例中展示了如何通过不同参数调用函数以生成不同的输出。
|
安全 Java 编译器
Java 基础语法-面试题(53道)(基础概念+基础语法+流程控制)
Java 基础语法-面试题(53道)(基础概念+基础语法+流程控制)
343 18
|
Java
Java 基础语法-面试题(54-63道)(数组+类+包)
Java 基础语法-面试题(54-63道)(数组+类+包)
199 16