javascript 数据类型之 - 总览

类型分类
  • 基本类型
    • 子类: String , Number, Boolean , Null , Undefined , Symbol
    • 特点: 基本类型的值不可修改, 对值的”修改” , 都是新开辟空间存储新值, 原值不变; 没有属性和方法. 调用属性和方法 , 都是借用包装类( new String(), new Number(), new Boolean() )实现.
    • 特例:
    undefined == null

    typeof null === 'object'
  • 引用类型
    • 子类: Object
    • Object 子类: Date , RegExp
    • 特点: 值按引用传递 , 类似快捷方式, 当将一个对象赋值给一个变量的时候, 变量拿到的只是快捷方式 , 但是通过快捷方式又可以实实在在找到对象进行操作. 所以对象的浅复制 , 就相当把快捷方式复制了一遍.
// step1 堆内存创建 {} , 得到地址(快捷方式)类似: 0X12313
// step2 创建 obj 变量
// step3 关联 : obj => 0X12313

var obj = {} ; 

// 所以
var obj2 = {}
obj == obj2 ; // false

var obj3 = obj
obj === obj3; // true

// 也正因为是引用关系, 所以一些死循环场景, 也是可以使用的, 就像你可以把快捷方式放到快捷方式所链接到的目录一样.

var obj = {
    b : 1
}

obj.a = obj
注意事项
  • 赋值及比较
// 基本类型
var a = 100
var b = 100 
a === b ; // true

// 引用类型
var obj1 = {}
var obj2 = {} 
obj1 === obj2; // false
  • 值修改
// 基本类型
var a = 100
var b = a 
a = 200
console.log(a,b); // 200 100

// 引用类型
var obj1 = {}
obj2 = obj1 ;
obj1.name = 'xx'
console.log(obj1.name,obj2.name); // 'xx' 'xx'
obj1 === obj2 // true
函数中的传递
// 基本类型
var a = 100;

function test(num){
    num += 100;
}
test(a);
console.log(a); // 100

// 引用类型
var obj = { a:100 }
function test2(data){
    data.a += 100
}
test2(obj);
console.log(obj); // {a:200}
总结
  • 赋值传参时 , 基本类型传递的是其实际值, 而引用类型传递的是引用值.

猜你喜欢

转载自blog.csdn.net/haokur/article/details/80455508