Un problema clásico: Las dos salidas siguientes del inconsistentes resultado?
// 情况1:值类型
let a = 100
let b = a
b = 20
console.log(a) // 100
// 情况2:引用类型
let a = { age: 100 }
let b = a
b.age = 20
console.log(a.age) // 20
Respuesta:
caso b es 1 值类型
, mientras que en el caso de b es 2 引用类型
.
Tipo de valor:
- El valor de una variable de tipo de espacio se fija, se almacena en la pila.
- Un tipo de valor y la variable B puede ser visto como una las variables no correlacionadas.
- b cambios no afectan el valor de un valor almacenado se copia consigo mismo.
- Usar la detección de tipo de datos typeof
Tipos de referencia:
- Referencia espacio tipo de variable no es fijo, almacenado en el montón.
- tipo de referencia variable b con un punto a la misma dirección de memoria.
- b cambios afectan el valor de una copia almacenada del objeto es un puntero a un puntero.
- Usando el instanceof tipo de datos detectado
Sal de este problema: JS en la que las variables son tipos de valor, que es una variable de tipo de referencia?
tipos de valores comunes:
let a // undefined,注意:未定义的变量不可用const定义
const s = 'abc' // 字符串
const n = 100 // 数字
const b = true // bool
const s = Symbol('s') // symbol
tipos comunes de referencia:
const obj = { x: 100 } //对象
const arr = ['a', 'b', 'c'] //数组
const n = null // 特殊引用类型,指针指向空地址