返回

巧妙利用类型转换,提升JavaScript代码可读性

前端

上篇文章主要介绍了一下各种数据类型转换成布尔值、数字和字符串的规则。刻意没有去谈到与运算符相关类型转换。这篇就重点讲一下这方面的知识。

一元运算符 +

一元运算符遵从以下规则:

  • 如果操作数是数字,则返回其正值。
  • 如果操作数是字符串,则返回数字0。
  • 如果操作数是布尔值,则返回其数值,即 true 返回 1,false 返回 0。
  • 如果操作数是 null 或 undefined,则返回 NaN。

示例:

console.log(+1); // 1
console.log(+"abc"); // 0
console.log(+true); // 1
console.log(+false); // 0
console.log(+null); // NaN
console.log(+undefined); // NaN

二元运算符 +

二元运算符 + 遵从以下规则:

  • 如果两个操作数都是数字,则返回其和。
  • 如果两个操作数都是字符串,则返回其连接后的字符串。
  • 如果一个操作数是数字,另一个操作数是字符串,则将数字转换为字符串,然后返回两个字符串的连接。
  • 如果一个操作数是布尔值,另一个操作数是数字或字符串,则将布尔值转换为数字,然后进行相应的运算。
  • 如果两个操作数都是 null 或 undefined,则返回 NaN。

示例:

console.log(1 + 2); // 3
console.log("abc" + "def"); // "abcdef"
console.log(1 + "abc"); // "1abc"
console.log(true + 1); // 2
console.log(false + 1); // 1
console.log(null + 1); // NaN
console.log(undefined + 1); // NaN

位运算符

位运算符是对二进制位进行操作的运算符。JavaScript中的位运算符包括:

  • &:按位与
  • |:按位或
  • ^:按位异或
  • <<:左移
  • :右移

  • :无符号右移

示例:

console.log(1 & 2); // 0
console.log(1 | 2); // 3
console.log(1 ^ 2); // 3
console.log(1 << 2); // 4
console.log(1 >> 2); // 0
console.log(1 >>> 2); // 0

算术运算符

算术运算符是对数字进行操作的运算符。JavaScript中的算术运算符包括:

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:取余

示例:

console.log(1 + 2); // 3
console.log(1 - 2); // -1
console.log(1 * 2); // 2
console.log(1 / 2); // 0.5
console.log(1 % 2); // 1

比较运算符

比较运算符是对两个值进行比较的运算符。JavaScript中的比较运算符包括:

  • ==:等于
  • !=:不等于
  • :大于

  • <:小于
  • =:大于等于

  • <=:小于等于

示例:

console.log(1 == 2); // false
console.log(1 != 2); // true
console.log(1 > 2); // false
console.log(1 < 2); // true
console.log(1 >= 2); // false
console.log(1 <= 2); // true

逻辑运算符

逻辑运算符是对布尔值进行操作的运算符。JavaScript中的逻辑运算符包括:

  • &&:与
  • ||:或
  • !:非

示例:

console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false
console.log(true || true); // true
console.log(true || false); // true
console.log(false || true); // true
console.log(false || false); // false
console.log(!true); // false
console.log(!false); // true

条件运算符

条件运算符是一个三元运算符,用于根据条件表达式来选择两个值中的一个。条件运算符的语法如下:

condition ? value1 : value2

示例:

const age = 18;
const message = age >= 18 ? "你已经成年了" : "你还没有成年";
console.log(message); // "你已经成年了"

类型推断

JavaScript是一种动态类型语言,这意味着变量的类型不是在编译时确定的,而是在运行时确定的。JavaScript中的类型推断是指根据变量的值来推断其类型。

示例:

let x = 1;
console.log(typeof x); // "number"
x = "abc";
console.log(typeof x); // "string"

应用场景

类型转换在JavaScript中有很多应用场景,其中包括:

  • 数据类型转换:将一种数据类型转换为另一种数据类型。
  • 比较运算:比较两个不同类型的值。
  • 逻辑运算:对布尔值进行操作。
  • 条件判断:根据条件表达式来选择两个值中的一个。
  • 类型推断:根据变量的值来推断其类型。

总结

类型转换是JavaScript中一项重要的知识,掌握了类型转换,可以编写出更加健壮、可读性更高的代码。