1. 概念
操作符就是用来进行数据运算的符号,类似又不完全等同于数学的运算符
2. 常见的操作符都有哪些?
-
递增递减操作符(++, -- ),
-
加减乘除操作符 (+,-,*,/),
-
取余操作符(%),
-
指数操作符(**),
-
布尔操作符(!),
-
逻辑与 (&&)
-
逻辑或 (||)
-
关系操作符 (>, <,>=,<=)
-
相等操作符(==,!=)
-
全等操作符(===,!==)
-
条件操作符( 表达式 ? 成立的逻辑 : 不成立的逻辑)
-
赋值操作符(=)
-
逗号操作符(,)
3. 接下来一一举例说明这些操作符
1. 递增递减操作符(++,--), 这个操作符可以放在变量前也可以放在变量后, 放在变量前视为语句执行时已经完成运算, 放在变量后视为语句执行后完成运算
(1) 前置递增递减
// 前置递增
let num = 1;
const sum = ++num + 2; // 在执行完++num时, num已经变成了2 , 2+2=4
console.log(num, sum); // 2, 4
// 前置递减
let num = 1;
const sum = --num + 2; // 在执行完--num时, num已经变成了0 , 0+2=2
console.log(num, sum); // 0, 2
(2) 后置递增递减
// 后置递增
let num = 1;
const sum = num++ + 2;
// 执行到num++并不会立即改变num变量的值, 而是语句结束之后才发生改变
// 因此sum的值是 3
// 执行到console.log(num, sum)时,因为const sum = num++ + 2; 已经执行完毕,所以num被修改为2
console.log(num, sum); // 2, 3
// 后置递减
let num = 1;
const sum = num-- + 2;
// 执行到num++并不会立即改变num变量的值, 而是语句结束之后才发生改变
// 因此sum的值是 3
// 执行到console.log(num, sum)时,因为const sum = num-- + 2; 已经执行完毕,所以num被修改为0
console.log(num, sum); // 0, 3
2.加减乘除操作符
不同的场景会有不同的运算规则
(1) 第一种场景 双方都是数字和数学运算一模一样
console.log(1 + 2); // 3
console.log(1 - 2); // -1
console.log(1 * 2); // 2
console.log(1 / 2); // 0.5
(2) 第二种场景
+ 操作符运算时 一方数字一方字符串, 会将数字方转成字符串, 底层调用的是 String()
-*/操作符运算时 一方数字一方字符串, 会将字符串方转成数字, 底层调用的是 Number()
console.log(1 + '2'); // 调用String(1) 将1转成字符串 结果是'12'
console.log(1 - '2'); // 调用Number('2') 将2转成数字 结果是'-1'
console.log(1 * '2'); // 调用Number('2') 将2转成数字 结果是'2'
console.log(1 / '2'); // 调用Number('2') 将2转成数字 结果是'0.5'
(3) 其他场景
1. 这是简单的示例 大家可以看着注释再试试其他场景, 此时不做过多介绍
// 数字加特殊值
console.log(1 + null); // 1 底层会将null转成数字 Number(null) => 0
console.log(1 + undefined); // NaN 底层会将undefined转成数字 Number(undefined) => NaN
console.log(1 + []); // 1 将[]转成字符串 [].toString =>'' result=>'1'
console.log(1 + {}); // 1[object Object] 调用对象的toString =>'[object Object]'
console.log(1 + NaN); // NaN和任何数字进行运算都是NaN
// 字符串加特殊值
console.log('1' + null); // 调用String(null) 输出'1null'
console.log('1' + undefined);// 调用String(undefined) 输出'1undefined'
console.log('1' + []); // 调用[].toString() 输出''
console.log('1' + {}); // 调用{}.toString() 输出[object Object]
console.log('1' + NaN); // NaN.toString() 输出'1NaN'
其他操作符下一篇再说.............