第2章 操作符
赋值操作符
复制操作符为单个 =
,将 =
右边赋值给 =
左边
js
let x = 10; // 将10赋值给x
let y = x; // 将x赋值给y
一元操作符
一元操作符只能用于一个操作数
加号与减号
js
let strNum = +'3'; // 将string类型转换为number类型或用于表示正数
let negativeNum = -5; // 负号将正数转换为负数
自增与自减
js
let num = 8;
console.log(num++); // 8(先输出数字,后加1)
console.log(++num); // 10(先加1,后输出数字)
console.log(num--); // 10(先输出数字,后减1)
console.log(--num); // 8(先减1,后输出数字)
算术操作符
js
console.log(1 + 5); // 加法
console.log(5 - 1); // 减法
console.log(3 * 9); // 乘法
console.log(7 / 2); // 除法
console.log(7 % 2); // 取余数
console.log(4 ** 2); // 指数运算
比较操作符
比较操作符返回 boolean
类型
js
// 大于号与小于号
console.log(1 > 5); // false
console.log(1 >= 5); // false
console.log(5 >= 5); // true
// 双等号内容相同为true,三等号完全相同为true
console.log(5 == 5); // true
console.log(5 == "5"); // true
console.log(5 === "5"); // false
// 特殊情况
console.log(undefined == null); // true
console.log(undefined === null); // false
逻辑操作符
与、或、非
js
// 与——两者都为true时,返回true
console.log(true && true); // true
console.log(true && false); // false
// 或——两者有一个为true时,返回true
console.log(true || false); // true
// 非——true返回false,false返回true
console.log(!true); // false
常见用法
js
// 常用
console.log(true && 'hello'); // hello
console.log(false || 'default'); // default
// 短路特性
console.log(false && 'not printed'); // false
console.log(true || 'not printed'); // true
// 转为布尔值
console.log(!1); // false
console.log(!!1); // true
三目运算符
js
let temperature = 31;
console.log(temperature > 30 ? "太热了" : "凉快"); // 太热了
temperature = 29;
console.log(temperature > 30 ? "太热了" : "凉快"); // 凉快
位运算符
与、或、异或
与运算:全1出1
或运算:有1出1
异或运算:同为0,不同为1
js
// 32位二进制数(补码运算)
// 5 101
// 3 011
console.log(5 & 3); // 1 与运算,全1出1
console.log(5 | 3); // 7 或运算,有1出1
console.log(5 ^ 3); // 6 异或运算,同为0,不同为1
按位取反
将十进制转为补码,按位取反,再转为原码计算十进制数
快捷算法:~n = -(n+1)
详细算法如下:
十进制转成原码(最高位是符号位,0为正数,1为负数)
原码转成反码(正数:反码 = 原码)(负数:反码 = 原码符号位不变,其余位取反)
反码转成补码(正数:补码 = 原码)(负数:补码 = 反码 + 1)
补码取反(包括符号位)
取反的补码转成原码(正数:原码 = 补码)(负数:原码 = (补码 - 1) 然后取反)
js
console.log(~5); // -6 按位取反(包括符号位),~n = -(n+1)
左移、右移
js
console.log(5 << 1); // 10 左移一位(乘2)
console.log(5 >> 1); // 2 右移一位(整除2)
console.log(-5 >> 1); // -3 负数高位补1
console.log(-5 >>> 1); // 2147483645 无符号右移,正负数高位均补0
预览: