Skip to content
Netflix - 每月低至 25 元

第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)

详细算法如下:

  1. 十进制转成原码(最高位是符号位,0为正数,1为负数)

  2. 原码转成反码(正数:反码 = 原码)(负数:反码 = 原码符号位不变,其余位取反)

  3. 反码转成补码(正数:补码 = 原码)(负数:补码 = 反码 + 1)

  4. 补码取反(包括符号位)

  5. 取反的补码转成原码(正数:原码 = 补码)(负数:原码 = (补码 - 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
关注微信公众号RackNerd - 美国 163 直连线路
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0

预览:

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.1.3