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基本类型和引用类型的主要内容,如果未能解决你的问题,请参考以下文章

关于js的引用类型和基本类型

JS基本类型和引用类型

JS基本数据类型和引用数据类型

js中的基本类型和引用类型

JS的数据类型-引用类型和基本类型

js——引用类型和基本类型