JavaScript 提供了丰富的运算符,用于执行各种操作,如算术运算、比较、逻辑运算等。以下是 JavaScript 中的主要运算符及其用法。其实运算符大体上各语言都大差不差,顶多是部分小细节会有不同,简单看看就好了。
算术运算符
加法 (+):用于两个数值相加或字符串连接。
let sum = 5 + 3; // 8
let str = "Hello" + " " + "World"; // "Hello World"
减法 (-):用于两个数值相减。
let difference = 10 - 4; // 6
乘法 (*):用于两个数值相乘。
let product = 4 * 3; // 12
除法 (/):用于两个数值相除。
let quotient = 10 / 2; // 5
取余 (%):用于获取两个数值相除后的余数。
let remainder = 10 % 3; // 1
递增 (++):用于将数值增加1。
let count = 1;
count++; // 2
递减 (–):用于将数值减少1。
let count = 2;
count--; // 1
指数 (**):用于计算一个数值的指数。
let power = 2 ** 3; // 8
赋值运算符
赋值运算符就记住一点,左侧变量是主动的一方
简单赋值 (=):用于将右侧的值赋给左侧的变量。
let x = 10;
加赋值 (+=):将右侧的值加到左侧变量并赋值。
let x = 5;
x += 3; // x = x + 3; 结果是 8
减赋值 (-=):将右侧的值从左侧变量中减去并赋值。
let x = 5;
x -= 3; // x = x - 3; 结果是 2
乘赋值 (*=):将右侧的值乘以左侧变量并赋值。
let x = 5;
x *= 3; // x = x * 3; 结果是 15
除赋值 (/=):将左侧变量除以右侧的值并赋值。
let x = 10;
x /= 2; // x = x / 2; 结果是 5
取余赋值 (%=):将左侧变量对右侧的值取余并赋值。
let x = 10;
x %= 3; // x = x % 3; 结果是 1
指数赋值 (**=):将左侧变量的值提升为右侧的指数并赋值。
let x = 2;
x **= 3; // x = x ** 3; 结果是 8
比较运算符
js中是有<=,>=等用法的
相等 (==):比较两个值是否相等,类型转换后再比较。
let isEqual = (5 == ' 5 ' ); // true
全等 (===):严格比较两个值是否相等,不进行类型转换。
let isStrictEqual = (5 === '5'); // false
不相等 (!=):比较两个值是否不相等,类型转换后再比较。
let isNotEqual = (5 != '5'); // false
不全等 (!==):严格比较两个值是否不相等,不进行类型转换。
let isStrictNotEqual = (5 !== '5'); // true
大于 (>):比较左侧值是否大于右侧值。
let isGreater = (10 > 5); // true
小于 (<):比较左侧值是否小于右侧值。
let isLesser = (5 < 10); // true
大于等于 (>=):比较左侧值是否大于或等于右侧值。
let isGreaterOrEqual = (10 >= 10); // true
小于等于 (<=):比较左侧值是否小于或等于右侧值。
let isLesserOrEqual = (5 <= 10); // true
逻辑运算符
与或非再基础不过了,都是通用的
逻辑与 (&&):当且仅当两个操作数都为 true 时,结果为 true。
let isTrue = (5 > 3 && 10 > 5); // true
逻辑或 (||):当一个或两个操作数为 true 时,结果为 true。
let isTrue = (5 > 3 || 10 < 5); // true
逻辑非 (!):返回操作数的布尔值的相反值。
let isFalse = !(5 > 3); // false
位运算符
按位与 (&):对两个操作数的每一位执行与操作。
let result = 5 & 1; // 1
按位或 (|):对两个操作数的每一位执行或操作。
let result = 5 | 1; // 5
按位异或 (^):对两个操作数的每一位执行异或操作。
let result = 5 ^ 1; // 4
按位非 (~):对操作数的每一位执行非操作。
let result = ~5; // -6
左移 (<<):将第一个操作数的所有位向左移指定的位数。
let result = 5 << 1; // 10
右移 (>>):将第一个操作数的所有位向右移指定的位数。
let result = 5 >> 1; // 2
无符号右移 (>>>):将第一个操作数的所有位向右移指定的位数,并用零填充空位。
let result = 5 >>> 1; // 2
其他运算符
三元运算符 (? 😃:基于条件表达式的结果返回不同的值。
let result = (5 > 3) ? 'Yes' : 'No'; // 'Yes'
逗号运算符 (,):计算两个表达式并返回第二个表达式的值。
可以在返回表达式前再做一些操作
let result = (1 + 2, 3 + 4); // 7
typeof 运算符:返回一个字符串,表示未经计算的操作数的类型。
未经计算的操作数的意思是在使用 typeof 运算符时,它不会对操作数进行计算或求值,而是直接返回操作数的类型。
let type = typeof 123; // 'number'
delete 运算符:删除对象的属性或数组的元素。
let obj = { name: 'John', age: 30 };
delete obj.age; // obj 变成 { name: 'John' }
删除数组时如果用下标删并不会缩短数组长度,只会把该下标位置元素变为undefined。如果要删去某个位置的元素,建议使用Array.prototype.splice
let arr = [1, 2, 3, 4, 5];
arr.splice(2, 1); // 从索引 2 开始删除 1 个元素
console.log(arr); // 输出 [1, 2, 4, 5]
console.log(arr.length); // 输出 4
void 运算符:计算一个表达式但不返回值。
void 0; // undefined
in 运算符:检测对象是否具有特定属性。
let obj = { name: 'John' };
'name' in obj; // true
instanceof 运算符:检测对象是否是某个构造函数的实例。
let arr = [];
arr instanceof Array; // true