JS 特殊运算符有哪些?

JavaScript 特殊运算符有哪些?

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

在这里插入图片描述

文章目录

    • 特殊运算符号有哪些?
      • 1. `??`(空值合并运算符)
      • 2. `??=`(空值合并赋值运算符)
      • 3. `?.`(可选链运算符)
      • 4. `?=`(三元运算符的简洁形式?实际上应称为逻辑空赋值运算符的误解)
      • 5. `typeof`(类型运算符)
      • 6. `instanceof`(实例运算符)
      • 7. `in`(属性运算符)
      • 8. `delete`(删除运算符)
      • 9. `void`(空运算符)
      • 10. `,`(逗号运算符)
    • 面试技巧

特殊运算符号有哪些?

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

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

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

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

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

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

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

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

let user = { name: 'Alice', address: { city: 'Wonderland' } };
let city = user?.address?.city; // city 的值为 'Wonderland'
console.log(city); // 输出: Wonderlandlet 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); // 输出: stringlet y = 42;
console.log(typeof y); // 输出: numberlet z = true;
console.log(typeof z); // 输出: booleanlet 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. 利用空值合并运算符处理默认值

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

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

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

6. 理解 typeofinstanceof 的区别

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

7. 谨慎使用 delete 运算符

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

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

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

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

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

看到这里的小伙伴,欢迎点赞、评论,收藏!

如有前端相关疑问,博主会在第一时间解答,也同样欢迎添加博主好友,共同进步!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149463.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

LVGL第一篇-了解lvgl显示原理以及使用C++移植

一、引言 在当今嵌入式系统与图形界面开发的广阔领域中,轻量级图形库 LVGL(Light and Versatile Graphics Library)恰似一颗璀璨耀眼的明星,正日益受到开发者们的热烈推崇与追逐。它以小巧精致之姿、高效卓越之能以及丰富多元之功…

Qt_事件的介绍

目录 1、理解事件 2、处理事件QEvent 3、键盘事件QKeyEvent 4、鼠标事件QMouseEvent 4.1 鼠标点击事件 4.2 鼠标释放事件 4.3 鼠标移动事件 5、滚轮事件QWheelEvent 6、定时器事件QTimerEvent 7、窗口事件QMoveEvent 8、事件分发器event 9、事件过滤器even…

峟思助力堤防工程安全:构建多功能防洪屏障

堤防工程,作为水利建设中至关重要的防护体系,不仅守护着江河、湖泊及滨海区域的安全,更是确保人民生命财产安全的坚固防线。在现代社会,随着技术的进步与安全意识的提升,堤防工程不仅限于传统的防洪功能,更…

CVPR最牛图像评价算法!

本文所涉及所有资源均在 传知代码平台可获取。 目录 概述 一、论文思路 1.多任务学习框架: 2.视觉-语言对应关系: 3.动态损失权重: 4.模型优化和评估: 二、模型介绍 三、详细实现方法 1.图像编码器和语言编码器(Image…

Solidity语言:重点学习Solidity编程语言,这是EVM上最常用的智能合约语言。

Solidity是一种面向合约的编程语言,用于在以太坊虚拟机(EVM)上编写智能合约。它是Solidity开发者在以太坊平台上创建智能合约的主要选择之一。 学习Solidity的重点包括以下几方面: 语法和数据类型:学习Solidity的基本语法、数据类型、变量声明和函数定义等。 智能合约:了…

刷完这个笔记,17K不能再少了....

大家好,最近有不少小伙伴在后台留言,得准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到理想…

cobaltstrike之execute-assembly内存加载—后渗透利用

通过execute-assembly内存加载来执行文件,从而避免后渗透中被杀毒软件静态报毒,使更多的工具能够继续利用,常见的方式有权限维持,代理上线等操作 远程bin文件加载 首先尝试远程加载bin文件 使用项目https://github.com/shanekha…

IO 多路转接之 epoll

文章目录 IO 多路转接之 epoll1、IO 多路转接之 poll1.1、poll 函数1.2、poll 函数返回值1.3、Socket 就绪条件1.3.1、读就绪1.3.2、写就绪1.3.3、异常就绪 1.4、poll 的优点1.5、poll 的缺点1.6、poll 改写 select 2、IO 多路转接之 epoll2.1、epoll 函数2.2、epoll_create2.3…

视频字幕生成:分享6款专业易操作的工具,让创作更简单!

​视频字幕如何添加?日常剪辑Vlog视频时,就需要给视频添加上字幕了。字幕是一个比较重要的元素,它不仅可以帮助听力受损或语言障碍的人士理解内容,还可以让你的视频更加易于理解和吸引观众。 那么如何实现视频字幕生成&#xff0c…

Linux 进程与进程状态

目录 1.进程。 1.进程的概念 2.并行和并发 3.并行和并发的区别: 4.PCB(程序控制块) 5.进程组与会话。 6.进程状态。 1.进程。 1.进程的概念 进程是操作系统进行资源分配和调度的一个独立单位。每个进程都运行在操作系统的控制之下&…

8.进销存系统(基于springboot的进销存系统)

目录 1.系统的受众说明 2.开发技术与环境配置 2.1 SpringBoot框架 2.2 Java语言简介 2.3 MySQL环境配置 2.4 idea介绍 2.5 mysql数据库介绍 2.6 B/S架构 3.系统分析与设计 3.1 可行性分析 3.1.1 技术可行性 3.1.2 操作可行性 3.1.3经济可行性 3.4.1 数据库…

一些做题中总结的零散的python函数的简单运用

输出保留两位数的小数 将16进制(可修改)的数进制转换成十进制并输出 大小写转化,第一个是搞成全部大写的,第二个高成全部小写的,最后一个是搞成第一个是大写的其他全部是小写的 将这个n的两边空格去掉 使用print(n,end…

叶国富学得会胖东来吗?

“大家都看不懂就对了,如果都看得懂我就没有机会了。”昨晚,实体零售迎来一则重磅消息,名创优品获得了全国第二大连锁超市永辉超市的大股东身份。在资本市场负反馈的压力下,名创优品创始人叶国富有了上述回应。 消息公布后&#x…

2.以太网

局域网 局域网: Local Area Networks (LAN) 网络大小分类 局域网园区网(可以理解为企业网)城域网 广域网是一个网络连接的技术,并非多大范围的网络 网关 为局域网内的用户提供了一扇门,通过网关可以访问到别的网络。这个门,就叫网关 以…

解决你的IDE在使用的时候测试单元@Test在创建Scanner对象是键盘键入不了的问题;

插播一条快讯,我在我的ide中新创建 了project后发现我的测试单元不好使了,即 import org.junit.Test; 这个包在创建Scanner对象接受键盘时,控制台输入时没有任何反应,键入不了了,我的问题出现原因可能是我导入了JDBC…

BitSet-解决数据压缩问题

一、问题引入 假设QQ音乐服务器上有9000万首音乐,用户按照歌名来搜索歌曲,如何使得满足这一需求所需的数据占用的内存空间最小以及用户搜索歌曲速度更快 二、分析问题 1、为了满足使得数据占用的内存更小,可以采用映射的思路,按…

【2024W35】肖恩技术周刊(第 13 期):肉,好次!

周刊内容: 对一周内阅读的资讯或技术内容精品(个人向)进行总结,分类大致包含“业界资讯”、“技术博客”、“开源项目”和“工具分享”等。为减少阅读负担提高记忆留存率,每类下内容数一般不超过3条。 更新时间: 星期天 历史收录:…

【C++算法】链表

知识总结 常用技术: 1.画图!!——>直观形象便于理解 2.引入虚拟”头结点“ 便于处理边界情况方便对链表操作 3.不要吝啬空间,大胆定义变量 4.快慢双指针——判环、找链表中环的入口、找链表中倒数第n个节点 链表中的常用…

移动数组中数字的方法(c语言)

1.移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。 例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3。 移动后,一维数组中的内容应为:5,6,7,8…