javascript中值类型和引用类型的区别

本文深入讲解JavaScript中的变量类型,包括值类型(如字符串、数值、布尔值、undefined、null)和引用类型(如对象、数组、函数)。阐述了两者之间的区别,如存储方式、赋值特性及数据类型的检测方法。
js的变量类型有哪些

1、值类型(基本类型):
字符串(string)
数值(number)
布尔值(boolean)
undefined、null
2、引用类型:
对象(Object)
数组(Array)
函数(Function)

值类型和引用类型的区别

【值类型】

1.占用空间固定,保存在栈中,在当前环境执行结束时销毁
2.保存和赋值是值的本身
3.可以使用typeof检测数据类型
4.基本类型数据是值类型

【引用类型】

1.占用空间不固定,保存在堆中,只有在引用的它的变量不在时,会被垃圾回收机制回收。 (引用变量存储在栈中的是指向堆中的数组或者对象的地址 )
2.保存与复制的是指向对象的一个指针
3.使用instanceof检测数据类型
4.使用new()方法构造出的对象是引用型

上述区别代码演示:

// 值类型:Number、string、bollean、undefined
var a = 100
var b = a
a = 200
console.log(b) // 100 保存与复制的是值本身
 
 
// 引用类型:对象、数组、函数、null(空指针)
// 可以扩展属性
var a = {age:20}
var b = a
b.age = 21 
console.log(a.age) // 21 

// **type of能判断哪些类型(问题 1)
// 所有的值类型
let a
console.log(typeof a) //undefined
console.log(typeof 'abc') //string
console.log(typeof 100) //number
console.log(typeof true) //boolean
console.log(typeof Symbol('s')) //symbol
//能判断函数
console.log(typeof console.log) //function
console.log(typeof
    function () {}) //function
//能判断引用类型(不能再继续识别)
console.log(typeof null) //object
console.log(typeof ['a', 'b']) //object
console.log(typeof {
    x: 100
}) //object

// 用instanceof来区分引用类型

// 如果变量是给定引用类型(根据它的原型链来识别)的实例,那么instanceof 操作符就会返回 true。

值类型和引用类型存储示意图
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值