本文总结 JavaScript 中较少见但实用的运算符,包括空值合并运算符(??)、逻辑空赋值(??=)、逻辑或/与赋值(||=、&&=)以及可选链操作符(?.)。通过具体代码示例解析其短路逻辑与赋值行为,帮助开发者写出更简洁安全的 JS 代码。
JavaScript常用运算符和操作符总结
|
类别 |
操作符 |
| 算术操作符 | +、 –、 *、 /、 %(取模) |
| 字符串操作符 | + 字符串连接 +=字符串连接复合 |
| 布尔操作符 | !、 &&、 || |
| 一元操作符 | ++ 、 -- 、 +(一元加)、 -(一元减) |
| 关系比较操作符 | < 、 <= 、 > 、>=、 != 、 == 、 === 、 !== |
| 按位操作符 | ~ 按位非 &按位与 | 按位或 ^按位异或 <<左移 >>有符号右移 >>>无符号右移 |
| 赋值操作符 | = 、 复合赋值(+=、-=、*=、%=) 复合按位赋值(~=、&=、|=、^=、<<=、>>=、>>>=) |
| 对象操作符 | .属性访问、[]属性或数组访问、 new调用构造函数常见对象、delete变量属性删除、void(返回undefined)、in判断属性、instanceof原型判断 |
| 其它操作符 | ?: 条件操作符、,逗号操作符、()分组操作、typeof类型操作符 |
js中不常见的运算符与操作符
空值合并运算符: ??
当左侧操作数为 null 或 undefined 时,返回右侧操作数,否则返回左侧操作数。
null ?? 'huli' // huli
undefined ?? 'huli' // undefined
'' ?? 'huli' // ''
[] ?? 'huli' // []
({}) ?? 'huli' // {}
NaN ?? 'huli' // NaN
false ?? 'huli' // false
0 ?? 'huli' // 0
逻辑空赋值: ??=
逻辑空赋值运算符 (x ??= y) 仅在 x 为 nullish(null 或 undefined)时执行赋值。
const a = { duration: 50 };
a.duration ??= 10;
console.log(a.duration);
// expected output: 50
a.speed ??= 25;
console.log(a.speed);
// expected output: 25
逻辑或: ||
存在真值则返回真,结果以前面的操作数为准
const a = 3;
const b = -2;
console.log(a > 0 || b > 0); // true
可被视为 false 的值
null undefined NaN "" 与 '' 0 false
逻辑或赋值: ||=
存在真值则返回,否则执行赋值
const a = { duration: 50, title: '' };
a.duration ||= 10;
console.log(a.duration);
// expected output: 50
a.title ||= 'title is empty.';
console.log(a.title);
// expected output: "title is empty"
逻辑与: &&
全部存在则返回真,结果以后面的操作数为准
const a = 3;
const b = -2;
console.log(a > 0 && b > 0);
// expected output: false
逻辑与赋值: &&=
存在真值则执行赋值
let a = 1;
let b = 0;
a &&= 2;
console.log(a);
// expected output: 2
b &&= 2;
console.log(b);
// expected output: 0
可选链操作符: ?.
可选链操作符( ?. )允许读取连接对象链深处属性的值,无需验证链中每个引用是否有效。?. 操作符功能类似 . 链式操作符,区别在于引用为空(nullish)时不引发错误,表达式短路返回 undefined。函数调用时,若函数不存在则返回 undefined。
const adventurer = {
name: 'Alice',
cat: {
name: 'Dinah'
}
};
const dogName = adventurer.dog?.name;
console.log(dogName);
// expected output: undefined
console.log(adventurer.someNonExistentMethod?.());
// expected output: undefined
总结
到此这篇关于js中不常见的运算符与操作符的文章就介绍到这了,更多相关js运算符与操作符内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!