JavaScript pilha e tipos simples, tipos complexos

JavaScript pilha e tipos simples, tipos complexos

tipo

tipos de dados simples são também conhecidos tipo básico ou tipo de valor, tipo complexo, também conhecido como um tipo de referência.

Tipos simples: Quando o valor armazenado é armazenado na variável em si, daí o tipo de valor nome. Tipos de valor tem corda, número, booleano, indefinida, null

Tipo complexo: tipos de dados complexos armazenados no endereço de memória de uma variável única (de referência), e, portanto, é chamado de tipos de dados de referência para criar novos objetos por palavra-chave (objetos do sistema, objetos personalizados), há um tipo complexo Object, Array, Date, etc.

Heap e pilha

alocação de espaço de pilha:

Stack: O valor atribuído pelo sistema operacional lançado automaticamente, o valor da variável local e similares. Operar de forma semelhante a uma estrutura de dados pilha. tipos de dados simples armazenadas na memória de pilha.

Montão: o armazenamento de tipo complexo (objecto), a libertação é geralmente atribuído pelo programador, se o programador não liberta, recuperado pelo mecanismo de recolha de lixo. tipos complexos de dados armazenados na memória heap.

Nota: JavaScript empilhar em si não é o conceito da chamada pilha apenas para ser melhor compreendido através de outros mecanismos de armazenamento linguagem JavaScript.

var a = 10
function fn(x){
    x++
    console.log('打印x', x)
}
fn(a)
console.log('打印a', a)
// 打印 x= 11
// 打印 a= 10
// 由于a是值类型,在内存中使用的是栈空间有自己的存储地址。所以在函数中x + 1 只改变了函数内的变量x自己对应存储空间的值,在函数外部a对应存储空间的值并未更改,打印a还是原来的值10
var obj = { num: 20}
function fn(x){
    x.num++
    console.log('打印x=', x)
}
fn(obj)
console.log('打印a=', obj)
// 打印x= { num: 21 }
// 打印a= { num: 21 }
// 由于obj是复杂类型在内存中使用的是堆空间没有单独存储地址,在函数fn中的x和外面的obj共享一份存储空间。因此函数中改变了x.num对应存储空间的值,实际也就是改变了obj对应的存储空间的值,因此外面的obj对象的值也会随之改变。
var a = []
var b = []
console.log('打印', a === b)
// 打印 false
var a = {}
var b = {}
console.log('打印', a === b)
// 打印 false
// 在使用复杂类型数据时,两个变量不能直接用 === 号来做比较。 由于比较麻烦一些,这个后续研究后更新文章

Acho que você gosta

Origin www.cnblogs.com/liea/p/12514237.html
Recomendado
Clasificación