JS【详解】运算符/操作符 (解构运算符,对象操作符,in,void 操作符,typeof 运算符, instanceof 运算符,赋值运算符,比较运算符,逻辑运算符,三元运算符,运算符的优先级)

发布时间:2026/11/12 19:49:45

JS【详解】运算符/操作符 (解构运算符,对象操作符,in,void 操作符,typeof 运算符, instanceof 运算符,赋值运算符,比较运算符,逻辑运算符,三元运算符,运算符的优先级) 展开运算符...…rest对象解构constuser{name:Tom,age:20,sex:male}const{name,...rest}user console.log(name)// Tomconsole.log(rest)// {age:20, sex:male}数组解构constarr[1,2,3,4]const[a,b,...rest]arr console.log(rest)// [3,4]函数参数剩余参数functionsum(first,...others){console.log(others)// [2,3,4]}sum(1,2,3,4)替代老旧arguments得到真实数组❌ 错误写法const[...rest,last]arr// Rest 不能放前面...数组展开consta[1,2]constb[...a,3,4]console.log(b)// [1,2,3,4]// 复制数组浅拷贝constcopy[...a]对象展开constobj1{x:1}constobj2{...obj1,y:2}// {x:1, y:2}// 合并、覆盖属性constobj3{...obj2,x:99}// {x:99, y:2}函数传参constnums[10,20,30]Math.max(...nums)// Math.max(10,20,30)常见实用场景数组去重[...new Set(arr)]对象合并、属性覆盖不修改原数据实现新增/删除属性函数不定参数接收解构运算符数组用[ ]对象用{ }详见https://blog.csdn.net/weixin_41192489/article/details/123073918对象操作符运算符功能例子new创建对象new Object().访问属性obj.name?.可选访问属性obj.name[]访问属性obj[‘name’]delete删除属性delete obj.namein判断属性是否存在prop in object?.可用于安全地链式访问对象的深层属性letme{name:张三,age:18}// me.job.content 会报错 Uncaught TypeError: Cannot read property content of undefinedconsole.log(me?.job?.content)// undefinedin 运算符判断指定的属性是否在指定的对象或其原型链中存在则返回 true否则返回 falseprop in objectprop 可为 字符串 或 symbol 类型的属性名或 数组索引// 数组中使用 inlettreesnewArray(redwood,bay,cedar,oak,maple);3intrees// 返回true6intrees// 返回falselengthintrees// 返回true (length是一个数组属性)Symbol.iteratorintrees// 返回true (数组可迭代只在ES2015上有效)// 内置对象PIinMath// 返回true// 自定义对象letmycar{make:Honda,model:Accord,year:1998};makeinmycar// 返回true继承的属性返回 truetoStringin{};// 返回truedelete 删除的属性 in 返回 falseletmycar{make:Honda,model:Accord,year:1998};deletemycar.make;makeinmycar;// 返回falselettreesnewArray(redwood,bay,cedar,oak,maple);deletetrees[3];3intrees;// 返回false将一个属性的值赋值为 undefined而没有删除它 in 返回 true。letmycar{make:Honda,model:Accord,year:1998};mycar.makeundefined;makeinmycar;// 返回truelettreesnewArray(redwood,bay,cedar,oak,maple);trees[3]undefined;3intrees;// 返回truevoid 操作符用于返回一个表达式的值是 undefined 的结果。使用场景创建一个无任何跳转的超链接死链ahrefjavascript:void(0)Click me/atypeof 运算符适用于检测值类型 null 除外 、函数和类的数据类型对引用类型的数据只能得到 object参数返回值数值number字符串string布尔型booleanundefinedundefinednullobjectSymbol 数据symbolNaNnumberInfinitynumber函数functionclass类function数组等对象objectinstanceof 运算符判断一个对象是否是由某个指定的构造器函数所创建functionHero(){}varhnewHero();varo{};hinstanceofHero;truehinstanceofObject;trueoinstanceofObject;true算术运算符y5运算符描述例子x 运算结果y 运算结果在线实例加法xy275实例 »-减法xy-235实例 »*乘法xy*2105实例 »/除法xy/22.55实例 »%取模余数xy%215实例 »自增xy66实例 »xy56实例 »–自减x–y44实例 »xy–54实例 »任何值和NaN做运算的结果都是NaN。任何的值和字符串做加法运算都会先转换为字符串然后进行字符串拼接。任何值做-、*、/运算时都会自动转换为Number。result1true1;// 2 1 1result2truefalse;// 1 1 0result31null;// 1 1 0result4100-1// 99a是变量而a和a是表达式a的值等于原变量的值a自增前的值a的值等于新值 a自增后的值实战范例 假设用户输入345怎么分别得到3、4、5这三个数呢得到3的方法345 除以100得到3.45然后取整得到3。即parseInt(345/100) 或 345/100%10得到4的方法345 除以100余数是45除以10得到4.5取整。即parseInt(345 % 100 / 10)或345/10% 10得到5的方法345 除以10余数就是5。即345 % 10即345/1 % 10赋值运算符给定x10和y5运算符例子等同于运算结果在线实例xy无同等写法x5实例 »xyxxyx15实例 »-x-yxx-yx5实例 »*x*yxx*yx50实例 »/x/yxx/yx2实例 »%x%yxx%yx0实例 »??x??yxx??yx10仅当 x 为 null 或 undefined 时将 y 赋值给 x其他如 x||y 即 xx||y xy 即 xxy比较运算符给定 x5运算符描述比较返回值实例等于比较前两边的操作数会被自动转换为相同的数据类型x8false实例 »x5true实例 »绝对等于值和数据类型均相等比较前两边的操作数不会发生数据类型转换x“5”false实例 »x5true实例 »!不等于比较前两边的操作数会被自动转换为相同的数据类型x!8true实例 »!不绝对等于值或数据类型有一个不相等或两个都不相等比较前两边的操作数不会发生数据类型转换x!“5”true实例 »x!5false实例 »大于x8false实例 »小于x8true实例 »大于或等于x8false实例 »小于或等于x8true实例 »任何值和NaN做任何比较都是false。NaN不和任何值相等包括他本身。 会将不同类型的东西转为相同类型进行比较大部分情况下都是转换为数字。例如console.log(66);// 打印结果true。这里的字符串6会先转换为数字6然后再进行比较console.log(true1);// 打印结果trueconsole.log(0-0);// 打印结果trueconsole.log(null0);// 打印结果false全等不会做类型转换严格相等运算符不适用的场景NaNNaN//false-00//true-00//true00//true此时可以使用 ES6 的 Object.is 实现Object.is()ES6 新增语法用于比较两个值是否相等大部分行为和 一致除以下特殊情况Object.is(NaN,NaN);// true Object.is(-0,0);// false Object.is(-0,0);// false注意 0 与 0 的比较两者是相同的。Object.is(0,0);// true -- 与 相同比较规则https://blog.csdn.net/weixin_41192489/article/details/116736255逻辑运算符给定 x6 y3运算符功能例子||或(x 5 || y 5) 结果为 false且(x 10 y 1) 结果为 true!非!(xy) 结果为 true??空值合并校验null??1 结果为 1undefined??1 结果为 1‘’??1 结果为 ‘’??为空值合并校验当??前的值为 null 或 undefined 时则返回??后的值否则返回??前的值。为短路的与如果第一个值为false则不会执行第二个值//第一个值为true会检查第二个值truealert(看我出不出来);// 可以弹出 alert 框//第一个值为false不会检查第二个值falsealert(看我出不出来);// 不会弹出 alert 框两个非布尔值的 运算如果第一个值为true则必然返回第二个值23得到3如果第一个值为false则直接返回第一个值3得到03得到3特别说明此处0转换为布尔值后是true不是false||为短路的或如果第一个值为true则不会执行第二个值两个非布尔值的 || 运算如果第一个值为true则直接返回第一个值1||3得到1如果第一个值为false则返回第二个值||3得到3此现象常用于给变量指定默认值如当a有值时将a赋值给b否则b为10leta;letba||10;// 此时 b 会被赋值为 10此种技巧简单而优雅但以下情况除外当a为虚值时b无法得到a的值leta0;letba||10;// 此时 b 还是 10对非布尔值进行逻辑运算则会先将其转换为布尔值然后再操作。vara10;a!a;//此时a的数据类型为布尔类型值为false【实战】容错处理【重要】当成功调用一个接口后返回的数据为 result 对象。这个时候我们用变量 a 来接收 result 里的图片资源。通常的写法是这样的if(result.resultCode0){letaresultresult.dataresult.data.imgUrl||http://img.smyhvae.com/20160401_01.jpg;}上方代码的意思是获取返回结果中的result.data.imgUrl这个图片资源如果返回结果中没有 result.data.imgUrl 这个字段就用 http://img.smyhvae.com/20160401_01.jpg 作为兜底图片。条件运算符(三元运算符)条件表达式 ? 条件表达式结果为true时的值 条件表达式结果为false时的值voteable(age18)?年龄太小:年龄已达到;如果条件的表达式的求值结果是一个非布尔值会将其转换为布尔值然后再运算。位运算符https://blog.csdn.net/web_green/article/details/136687142运算符的优先级优先级由高到低.、[]、new、--!、~、单目、-单目、typeof、void、delete%、*、/双目、-双目、、、、、、!、^ (位运算中的异或运算符)|||?:、、-、*、/、%、、、、、^、|,()不属于运算符但可用于提升运算的优先级被()包裹的内容会优先计算从最内层的()开始计算逐层展开早上好(obj[name(12)]同学)计算(12)计算[name(12)]计算obj[name(12)]计算(obj[name(12)] 同学)计算早上好 (obj[name(12)] 同学)
延伸阅读

更多相关文章

2026/10/23 8:24:22

如何用parboiled2快速构建高性能解析器?5分钟入门教程

如何用parboiled2快速构建高性能解析器?5分钟入门教程 【免费下载链接】parboiled2 A macro-based PEG parser generator for Scala 2.10 项目地址: https://gitcode.com/gh_mirrors/pa/parboiled2 parboiled2是一个基于Scala 2.12的宏驱动PEG解析器生成库&a…

2026/11/12 4:14:02

WQFN封装芯片PCB布局与焊接工艺全解析:以LM27965为例

1. 项目概述:从一颗芯片的封装说起在硬件工程师的日常里,选型和画板是两件既基础又充满挑战的活儿。你可能会花大量时间研究芯片的数据手册,对比性能参数,但往往容易忽略一个同样关键的环节——封装。封装选对了,PCB布…

2026/11/12 19:49:10

出租电工证怎么个手续最新政策解读

电工证能出租吗?学历不高怕报不上名?最新手续全解析 你是不是听说有人靠出租电工证赚钱,心里也动了念头? 学历不高怕报不上名 ?先别急着动手,现在网上查询一下,就能搞清楚 出租电工证怎么个手续…

2026/11/12 19:49:10

电工证考不到怎么回事 怎么报名才能一次通过

电工证考不到怎么回事 怎么报名才能一次通过 实操考试心里没底怕挂科,这是不少准备考电工证的小伙伴的真实写照。尤其是像济源房建工程的从业者,手里没证就等于没了饭碗。今天咱们就来聊聊, 电工证考不到怎么回事 ,以及 怎么报名…

2026/11/12 19:49:10

广西电工作业身亡事件背后,通过率揭秘让你少走弯路

广西电工作业身亡事件背后,通过率揭秘让你少走弯路 学历不高怕报不上名?广西电工作业身亡事件后,越来越多的工人开始关注特种作业操作证的重要性。其实,这个证并不难考,关键是你是否了解它的 通过率揭秘…

2026/11/12 19:49:10

南宁如何去考电工证网上查询报名费多少钱

南宁如何去考电工证网上查询报名费多少钱 你是不是学历不高,担心自己报不上名?其实,考电工证并不看学历高低,关键是你是否符合报考条件。特别是南宁的很多建筑工地、工厂、维修单位,对电工证的需求很大,但很多人因为不了解流程而错失机会。今天就来聊聊…

2026/11/12 19:44:09

虎林哪里考电工证好,真实经历告诉你别被中介坑

虎林哪里考电工证好,真实经历告诉你别被中介坑 你是不是也和我一样,一开始想考电工证的时候,满脑子都是“虎林哪里考电工证好”?不知道去哪报名怕被中介坑,担心花了钱拿不到证,甚至考了证也用不上。我自己当初就是这样,走了不少弯路,也踩了一些坑,今…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/12 0:04:01

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘 工地太忙根本没时间复习考试?你不是一个人。作为一名在南阳卧龙区干了七八年市政公用工程的电工,我深知这个问题的现实性。电工证不仅是工作的“入场券”,更是职业发展的“通行证”,但备考过程…

2026/11/12 0:04:01

双流电工证考别怕挂科!郑州报考避坑指南全攻略

双流电工证考别怕挂科!郑州报考避坑指南全攻略 实操考试心里没底怕挂科?双流电工证考在郑州报名,很多人因为不了解流程、准备不充分,白白浪费时间和金钱。作为三门峡应届工程类毕业生,我也曾经历过这样的焦虑。今天就从零开始,手把手教你如何避开郑州报…

2026/11/12 0:04:01

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少 之前考的证在外省能不能转过来?这个问题确实让不少准备换城市工作的朋友犯了难,尤其像电工证这种实操性很强的证书,很多人担心跨省后证书能不能继续用。其实,只要符合相关流程,是可以顺利转…

2026/11/11 20:27:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/12 9:51:42

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑