js的数据类型

js的数据类型分为:基本类型和引用(复杂)类型2大类。

1. 基本类型:存放在栈(stack)内存中的简单数据段:(Undefined、Null、Boolean、Number 和 String)

  • 数值类型:整数和浮点数
  • 字符串类型:用引号括起来,可以双引号,也可以单引号
  • 布尔类型:true和false
  • undefined类型:确定一个已经声明但是还没有赋值的变量
  • null类型:表明某个变量的值为空。

  按值访问的,因为可以直接操作保存在变量中的实际值。示例:

var a = 10;
var b = a; 
b = 20; 
console.log(a); // 10值

上面b只是保存了a复制的一个副本。所以,b的改变,对a没有影响。


2. 引用类型:即存放在堆(heap)内存中有多个值构成的对象:(Object,Array,Function)

变量实际保存的是一个指针,这个指针指向另一个位置,不可以直接访问堆内存空间中的位置和操作堆内存空间。只能操作对象在栈内存中的引用地址。所以,引用类型数据在栈内存中保存的实际上是对象在堆内存中的引用地址。通过这个引用地址可以快速查找到保存中堆内存中的对象。

  var obj1 = new Object();

  var obj2 = obj1;

  obj2.name = "我有名字了";

  console.log(obj1.name); // 我有名字了

 // 说明这两个引用数据类型指向了同一个堆内存对象。obj1赋值给onj2,实际上这个堆内存对象在栈内存的  引用地址复制了一份给了obj2,

 // 但是实际上他们共同指向了同一个堆内存对象。实际上改变的是堆内存对象。

区别:

1)、基本类型会将原始值的副本赋值给新变量此后这两个变量是完全独立的,他们只是拥有相同的value而已。

2)、引用类型会把存在栈中的内存地址赋值给新变量(多了一个指针)。但这两个变量都指向了堆内存中的同一个对象,因此,改变其中任何一个变量,都会相互影响。

typeof   123   //Number

typeof   'abc'  //String

typeof    true       //Boolean

typeof    undefined   //Undefined

typeof    null        //Object

typeof    { }           //Object

typeof    [ ]           //Object

typeof    console.log()       //Function

null类型进行typeof操作符后,结果是object,原因在于,null类型被当做一个空对象引用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值