数据类型之间的区别
1.存储
基本数据类型有number数字类型,string字符串类型,布尔类型,undefined类型和null类型,然后他们存储的地方是栈内存中;
引用数据类型有对象,函数,数组,然后他们数据本体存放的地址是堆内存中,然后变量名存放的地址是栈内存中
注意: 基本数据类型内部存储的是值,引用数据类型内部存储的是地址
var num = 100
var str = 'abc'
var obj = {
a:1,
b:2
}
var arr = [1,2,3,4]
2.赋值
基本数据类型:赋值以后,两个变量之间没有任何关系,相当于将自己的某一个东西,复制一份给你,你的就是你的,我的就是我的
复杂数据类型:赋值以后,因为变量内部存储的是指向堆内存的地址,所以在赋值的时候,其实是将地址给到另一个变量
var num1 = 100
var num2 = num1 // num2===100
num2 = 666
console.log(num1) //100
console.log(num2) //666
3.比较
基本数据类型:就是 值 的比较
引用数据类型:比较的时候 比较的是存储地址 如果地址相同就是true 如果地址不同就是false
var num1 = 100
var num2 = 200
console.log(num1 === num2) //flase
var arr1 = [1,2,3]
var arr2 = arr1
console.log(arr1 === arr2) //true
4.传参
基本数据类型:就是将值拷贝一份传递给形参,在函数内修改,不会影响外界
引用数据类型:将存储地址赋值给形参,在函数内修改会影响外界
function fn(num){
num = 'qf001'
}
var str = 'abc'
fn(str)
console.log(str) //abc
function fn(o){
o.name = 'qwer'
}
var obj = {
name:'ABC'
}
fn1(obj)
console.log(obj.name)//qwer