javascript中值类型和引用类型的区别
2020-04-11 本文已影响0人
loushumei
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。
值类型和引用类型存储示意图
2-1值类型和引用类型.png