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

274 1 年前
基本数据类型又叫原始数据类型或简单数据类型,引用数据类型又叫复杂数据类型,基本数据类型值指保存在栈内存中的简单数据段。引用数据类型值指保存在堆内存中。引用数据类型变量保存的实际上的是一个指针

在Javascript中变量是松散类型的,也就是说,变量可以保存任何类型的的数据。从数据在内存中的存储方式来看,Javascript的数据类型可以分为基本数据类型和引用数据类型。基本数据类型又叫原始数据类型或简单数据类型,引用数据类型又叫复杂数据类型。

基本数据类型

JavaScript 语言基本数据类型有六种,分别是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、Symbol。

基本数据类型值指保存在栈内存中的简单数据段。

基本数据类型的值按值访问的,且这个值是不能改变的。这里有点想不通,那我们以下面代码为例来阐述吧

var str = '123tomato456';
var b = str.toUpperCase();
console.log(str);//123tomato456
console.log(b);//123TOMATO456
str = '789user000';//789user000
console.log(str);

首先这代码第条语句 var str = '123tomato456',变量是str,值是123tomato456,值‘123tomato456’永恒不会变的,str.toUpperCase()返回的是 123tomato456的一个转换为大写的副本,并没有改变原来123tomato456,当执行 str = '789user000'时,程序也没有改变123tomato456而是给str变量赋予了一个新的值。

基本数据类型值指保存在栈内存(Stack)中,操作的是变量实际保存的值

var a = 1;
var b = a;
a = 2;
console.log(a);//2
console.log(b);//1

在栈内存中会保存两条记录 a >>> 1b >>> 1

上面的代码图解过程为:

引用数据类型

JavaScript 语言引用数据类型是指保存在堆内存中的对象,所有的复杂结构数据都是由object类型衍生而来,无论是数组,还是函数,都属于引用数据类型

引用数据类型值指保存在堆内存中。 引用数据类型变量保存的实际上的是一个指针,这个指针指向堆内存内存中的另一个位置,该位置保存着对象。访问方式是按引用访问。

如:

var a = 1,b = ' string'
var obj = {
  name : "Tom",
  age : 10,
  body : {
    head : 1,
    hand : 2,
    foot : 2
  }
};
var fun = function(param) {
  alert(param);
};

引用类型变量的复制,复制的是存储在栈内存中的指针,这个指针指向堆内存中的同一个对象。

var a = {
	name:'tomato',
	age:28
}
var b = a;
b.age = 30;
console.log(a.age);//30
分类栏目
© 2018邮箱:11407215#qq.comGitHub沪ICP备12039518号-6