JS基本类型和引用类型
Posted qinwang199
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS基本类型和引用类型相关的知识,希望对你有一定的参考价值。
基本数据类型: Undefined, Null,Boolean,Number,String Symbol(es6新加)
引用类型: Object,Array,Data,RegExp,Function,基本包装类型,单体内置对象
基本类型跟引用类型的分别:
1. 基本类型保存在栈中,而引用类型保存在堆中
2. 在将一个值 复制给变量时,解析器需确定这个值是基本类型和引用类型
如果值是基本类型,那么存储的就是值,
如果值是引用类型存储的是地址(也就是指针),这个地址指向的就是这个堆空间
基本类型跟引用类型都是按值传递的
var a = [1,2,3] var b = a; b.push(4) console.log(a) // [1,2,3,4]
上面这段代码 就是一个很好的说明 a 是一个引用类型, 因此它的值存储的就是地址,并且a把值赋值给变量b,因此a跟b都指向了
一个数组, 所以当b发生改变了 , a也跟着改变了
传递参数
function setName(obj) { obj.name = "Nicholas"; } var person = new Object(); setName(person); alert(person.name); //"Nicholas"
当把变量person传入到了 setName函数中 , 此时变量person的值就传递给了函数内部的obj,因为传递的值是地址,所以obj添加了一个属性name,
那么也相当于给person添加上了,所以person.name = "Nicholas"
function test(m){
m ={v:5}
}
var m = {k:30};
test(m);
console.log(m.v) // undefined
变量 m 传递给函数test,把变量m的值传递给了函数内部中的m,但是函数数内部又开了一个新的空间,此时的函数内部中的变量m地址已经发生改变了了,所以跟全局变量 m 无关
以上是关于JS基本类型和引用类型的主要内容,如果未能解决你的问题,请参考以下文章