js类型转换与引用类型详解(Boolean_Number_String)


在JavaScript中,类型转换和引用类型是基础且重要的概念。这里我将简要解释关于`Boolean`、`Number`、`String`的基本类型转换以及引用类型的理解。

### 基本类型转换

#### Boolean

- 转换为`Boolean`时,JavaScript遵循一些规则来判断值是否为真(truthy)或假(falsy)。例如,`0`、`""`(空字符串)、`null`、`undefined`、`NaN`和`false`本身被转换为`false`,其他所有值都被视为`true`。


let value = 0;
console.log(Boolean(value)); // false

value = "Hello";
console.log(Boolean(value)); // true

#### Number

- 字符串转换为数字时,如果字符串包含有效的数字序列,则将其转换为对应的数值。否则,结果为`NaN`。

- 布尔值`true`和`false`分别转换为`1`和`0`。


console.log(Number("123")); // 123
console.log(Number("Hello")); // NaN
console.log(Number(true)); // 1
console.log(Number(false)); // 0

#### String

- 几乎所有值都可以转换为字符串,包括数字、布尔值等。使用`String()`函数或模板字符串可以实现这一点。


console.log(String(123)); // "123"
console.log(String(true)); // "true"

### 引用类型

与基本类型(如`Boolean`、`Number`、`String`、`null`、`undefined`、`Symbol`和`BigInt`)不同,引用类型(如`Object`、`Array`、`Function`等)存储的是对值的引用,而非值本身。这意味着当你复制一个引用类型的值时,你实际上是在复制一个指向该值的指针,而不是值本身。


let obj1 = {a: 1};
let obj2 = obj1; // obj2 引用 obj1 的值

obj2.a = 2;
console.log(obj1.a); // 2,因为 obj1 和 obj2 指向同一个对象

在JavaScript中,理解基本类型与引用类型的区别非常重要,因为这直接影响到变量的赋值、比较和内存使用等方面。