【重走JavaScript之高级程序设计】 操作符
1.【重走JavaScript之高级程序设计】 流程语句
2.【重走JavaScript之高级程序设计】 操作符
3.【重走JavaScript之高级程序设计】函数Function4.【重走JavaScript之高级程序设计】迭代器与生成器5.【重走JavaScript之高级程序设计】数组Array6.【重走JavaScript之高级程序设计】变量、作用域与内存7.【重走JavaScript之高级程序设计】客户端存储8.【重走JavaScript之高级程序设计】期约与异步函数9.【重走JavaScript之高级程序设计】BOM10.【重走JavaScript之高级程序设计】JSON11.【重走JavaScript之高级程序设计】集合和映射12.【重走JavaScript之高级程序设计】Math13.【重走JavaScript之高级程序设计】对象Object14.【重走JavaScript之高级程序设计】字符串String15.【重走JavaScript之高级程序设计】网络请求与远程资源16.【重走JavaScript之高级程序设计】JavaScript Api17.【重走JavaScript之高级程序设计】模块一、一元操作符
只操作一个值的操作符叫一元操作符
递增递减操作符
-
前缀递增递减符号
++a; --a;
,变量a的值会在语句求值前被改变,具有副作用 -
后缀递增递减符号
a++; a--;
,变量a的值会在语句求值后被改变,不会改变语句执行的结果。
对于递增递减操作符,与其他数据类型使用
- 数值字符串转变为数值再计算,非数值字符串转变为NaN再计算
- 布尔值false变为0再计算,布尔值true变为1再计算
- 浮点数加1或减1
let s1 = "2", s2 = "z", b = false, f = 1.1;
let o = {
valueOf() {
return -1
}
};
s1++; // 值变成数值3
s2++; // 值变成NaN
b++; // 值变成数值1
f--; // 值变成0.1000...09(浮点数不精确)
o--; // 值变成-2
二、一元+或-
一元+或-用法同数学。
单独使用一元+或-应用到非数值,执行Number()类型转换。布尔值转为0或1,字符串根据规则解析,对象调用valueOf或toString,+和-同理。
let s1 = "01", s2 = "1.1", s3 = "z", b = false, f = 1.1;
let o = {
valueOf() {
return -1
}
};
s1 = +s1; // 值变成数值1
s2 = +s2; // 值变成1.1
s3 = +s3; // 值变成NaN
b = +b; // 值变成数值0
f = +f; // 值仍是1.1
o = +o; // 值变成-1
三、位操作符
?
四、布尔操作符
- 逻辑非 !
- 逻辑与 && 全真为真,一假则假。注意逻辑短路
- 逻辑或 || 全假为假,一真则真。注意逻辑短路
五、乘性操作符
- *乘
- /除
- %取余
六、加性操作符
加法操作符+如下,减法操作符同理
- 数值直接相加
- 两个字符串直接拼接,一个字符串一个数值先将数值转换为字符串再拼接。
- 有NaN则返回Nan
Infinity + Infinity = Infinty; -Infinity + -Infinity = -Infinty; Infinity + -Infinity = NaN;
+0 + +0 = +0; -0 + +0 = +0; -0 + -0 = -0;
- undefined null 则调用String(),返回"undefined"和"null"
七、关系操作符
< > <= >=同数学规则,结果返回布尔值
- 两个相同类型字符串比较,按照字符编码。
- 一个字符串一个数值,则将字符串转化为数值再比较。
- 只要有NaN,则返回false。
八、 相等操作符
等于和不等于 == 和!=
- 先强制转化类型再比较
null == undefined // true
,且null和undefined不能转化为其他类型进行比较- 有NaN则返回false
全等和不全等 === 和!==
- 不会转化类型直接比较
- !==代表在不转化的前提下不想等返回true
null === undefined // false
,数据类型不同- 推荐使用全等和不全等操作符,以免遇到类型转化问题
九、条件操作符
三元表达式,三元表达式可以嵌套但是缺乏可读性
a = 表达式 ? 真走这 : 假走这
十、赋值操作符
let num =10,将右手的值赋给左手
+= 或 *=这类复合赋值仅仅是简写语法,不会提升任何性能
十一、逗号操作符
let num1 = 1, num2 = 2, num3 = 3
洗尽铅华始见金,褪去浮华归本真
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现