JS 特殊运算符的使用

 更新时间:2024年09月30日 11:51:37   作者:二川bro  
JavaScript中包含了一系列不常见但功能强大的特殊运算符,如空值合并运算符(??)、可选链运算符(?.)等,这些运算符在特定场景下极大地简化了代码的复杂度,并提高了开发效率,通过深入了解这些特殊运算符,开发者可以更加高效地处理各种数据和逻辑

众多编程语言之中JavaScript ,以其强大而全面的功能深受前端开发者喜爱。其丰富的运算符集,不仅包括了广泛应用的算术运算符、比较运算符以及逻辑运算符,还蕴藏着一系列较为冷门但同样功能强大的运算符。这些不常被提及的运算符,或许因它们特定的应用场景或是相对少见的使用频率,而未能广泛进入开发者的视野。然而,深入了解并掌握这些运算符,无疑能够为我们的开发工作增添更多的便利与高效。接下来,让我们一同了解下哪些冷漠且很适用的运算符~

特殊运算符号有哪些?

1. ??(空值合并运算符)

空值合并运算符 ?? 用于当左侧操作数为 null 或 undefined 时,返回右侧操作数。

let x = null;
let y = 'default';
let z = x ?? y; // z 的值为 'default'
console.log(z); // 输出: default

2. ??=(空值合并赋值运算符)

空值合并赋值运算符 ??= 用于当左侧变量为 null 或 undefined 时,将右侧的值赋给左侧的变量。

let x = null;
let y = 'value';
x ??= y; // x 的值变为 'value'
console.log(x); // 输出: value

3. ?.(可选链运算符)

可选链运算符 ?. 允许我们安全地访问深层嵌套的属性,而不用担心中间某个属性是 null 或 undefined

let user = { name: 'Alice', address: { city: 'Wonderland' } };
let city = user?.address?.city; // city 的值为 'Wonderland'
console.log(city); // 输出: Wonderland

let nullUser = null;
let nullCity = nullUser?.address?.city; // nullCity 的值为 undefined
console.log(nullCity); // 输出: undefined

4. ?=(三元运算符的简洁形式?实际上应称为逻辑空赋值运算符的误解)

注意:这里有一个小误区,?= 并不是三元运算符的简洁形式,而是逻辑空赋值运算符(Logical Nullish Assignment ??=)的一部分,已在上面介绍。真正的三元运算符是 ?:,用于简单的条件判断。

let age = null;
age = age ? age : 18; // 传统三元运算符用法,如果 age 为 null 或 undefined,则赋值为 18
console.log(age); // 输出: 18

// 使用 ??= 简化
let age2 = null;
age2 ??= 18; // 如果 age2 为 null 或 undefined,则赋值为 18
console.log(age2); // 输出: 18

5. typeof(类型运算符)

typeof 运算符用于判断一个变量的类型。

let x = 'Hello, world!';
console.log(typeof x); // 输出: string

let y = 42;
console.log(typeof y); // 输出: number

let z = true;
console.log(typeof z); // 输出: boolean

let u;
console.log(typeof u); // 输出: undefined

6. instanceof(实例运算符)

instanceof 运算符用于测试一个对象是否在其原型链原型上具有一个构造函数的 prototype 属性。

class Animal { }
class Dog extends Animal { }

let dog = new Dog();
console.log(dog instanceof Dog); // 输出: true
console.log(dog instanceof Animal); // 输出: true

7. in(属性运算符)

in 运算符用于检查对象是否具有指定的属性。

let obj = { a: 1, b: 2 };
console.log('a' in obj); // 输出: true
console.log('c' in obj); // 输出: false

8. delete(删除运算符)

delete 运算符用于删除对象的属性。

let obj = { a: 1, b: 2 };
delete obj.a;
console.log(obj); // 输出: { b: 2 }

9. void(空运算符)

void 运算符用于计算一个表达式,并返回 undefined 作为结果。

let x = void (0); // x 的值为 undefined
console.log(x); // 输出: undefined

10. ,(逗号运算符)

逗号运算符用于评估两个表达式,并返回最后一个表达式的结果。

let x = (1, 2); // x 的值为 2
console.log(x); // 输出: 2

面试技巧

1. 理解并熟悉每个运算符的用途、优点

在面试中,对 JavaScript 运算符的深刻理解能够帮助你快速解决算法问题,并写出更简洁、高效的代码。

2. 注意运算符的优先级和结合性

了解运算符的优先级和结合性(即运算顺序)对于避免逻辑错误至关重要。例如,*(乘法)的优先级高于 +(加法)。

3. 使用可选链运算符简化代码

在访问嵌套对象属性时,使用可选链运算符 ?. 可以避免繁琐的条件检查,使代码更简洁、易读。

4. 利用空值合并运算符处理默认值

在处理可能为 null 或 undefined 的变量时,使用空值合并运算符 ?? 可以方便地设置默认值,减少代码冗余。

5. 掌握三元运算符的简洁写法

三元运算符 ?: 是条件判断的一种简洁写法,可以在一行内完成简单的条件逻辑,使代码更加紧凑。

6. 理解 typeof 和 instanceof 的区别

typeof 用于判断变量类型,而 instanceof 用于判断对象是否是某个构造函数的实例,两者在用途上有所不同。

7. 谨慎使用 delete 运算符

delete 运算符可以删除对象的属性,但删除数组元素时应谨慎,因为它不会改变数组长度,只是将元素值设置为 undefined

8. 熟悉逗号运算符的用途

逗号运算符在某些情况下可以简化代码,例如在 for 循环中同时更新多个变量。

9. 利用 void 运算符避免不必要的返回值

void 运算符可以用于避免函数或表达式返回不必要的值,确保代码逻辑的清晰性。

到此这篇关于JS 特殊运算符的使用的文章就介绍到这了,更多相关JS 特殊运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript作用域深度剖析之动态作用域

    JavaScript作用域深度剖析之动态作用域

    这篇文章主要为大家介绍了 JavaScript作用域学习之动态作用域深度剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • JavaScript基础系列之函数和方法详解

    JavaScript基础系列之函数和方法详解

    经常谈论起函数和方法,也常常搞不清楚它们之间的界限,经常把两个混用,这篇文章主要给大家介绍了关于JavaScript基础系列之函数和方法的相关资料,需要的朋友可以参考下
    2021-09-09
  • 用原生 JS 实现 innerHTML 功能实例详解

    用原生 JS 实现 innerHTML 功能实例详解

    这篇文章主要介绍了用原生 JS 实现 innerHTML 功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Ionic实现页面下拉刷新(ion-refresher)功能代码

    Ionic实现页面下拉刷新(ion-refresher)功能代码

    这篇文章主要介绍了使用Ionic实现页面下拉刷新(ion-refresher)功能的代码,感兴趣的朋友一起看看吧
    2016-06-06
  • JS实现消灭星星案例

    JS实现消灭星星案例

    这篇文章主要为大家详细介绍了JS实现消灭星星案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • JavaScript XML操作 封装类

    JavaScript XML操作 封装类

    最近研究XML 用JavaScript写了一个简单的XML读取的操作类发给大家分享一下 可兼容 IE 火狐 Safari Chrome 6月30日下午 新修改了一下
    2009-07-07
  • JavaScript中toLocaleString()和toString()的区别实例分析

    JavaScript中toLocaleString()和toString()的区别实例分析

    这篇文章主要介绍了JavaScript中toLocaleString()和toString()的区别,结合实例形式对比分析了toLocaleString()和toString()针对字符串、数组与日期操作过程中的区别与使用技巧,需要的朋友可以参考下
    2018-08-08
  • js实现一款简单踩白块小游戏(曾经很火)

    js实现一款简单踩白块小游戏(曾经很火)

    本文给大家分享原生js实现曾经很火的一款小游戏—别踩白块,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-12-12
  • NW.js 简介与使用方法

    NW.js 简介与使用方法

    NW.js (原名 node-webkit)是一个基于 Chromium 和 node.js 的应用运行时,通过它可以用 HTML 和 JavaScript 编写原生应用程序.这篇文章主要介绍了NW.js 简介与使用,需要的朋友可以参考下
    2018-02-02
  • 如何在一个页面显示多个百度地图

    如何在一个页面显示多个百度地图

    经常有人问,百度地图JavaScript API能在同一页面显示多个地图吗?当然可以啊,为什么不可以呢?地图之于页面无非就是个div,我们可以在页面显示多个div,自然也可以显示多个地图。
    2013-04-04

最新评论