类型分类
- 基本类型
- 子类:
String
, Number
, Boolean
, Null
, Undefined
, Symbol
- 特点: 基本类型的值不可修改, 对值的”修改” , 都是新开辟空间存储新值, 原值不变; 没有属性和方法. 调用属性和方法 , 都是借用包装类(
new String()
, new Number()
, new Boolean()
)实现. - 特例:
undefined == null
typeof null === 'object'
- 引用类型
- 子类:
Object
Object
子类: Date
, RegExp
…- 特点: 值按引用传递 , 类似快捷方式, 当将一个对象赋值给一个变量的时候, 变量拿到的只是快捷方式 , 但是通过快捷方式又可以实实在在找到对象进行操作. 所以对象的浅复制 , 就相当把快捷方式复制了一遍.
var obj = {} ;
var obj2 = {}
obj == obj2 ;
var obj3 = obj
obj === obj3;
var obj = {
b : 1
}
obj.a = obj
注意事项
var a = 100
var b = 100
a === b ;
var obj1 = {}
var obj2 = {}
obj1 === obj2;
var a = 100
var b = a
a = 200
console.log(a,b);
var obj1 = {}
obj2 = obj1 ;
obj1.name = 'xx'
console.log(obj1.name,obj2.name);
obj1 === obj2
函数中的传递
var a = 100;
function test(num){
num += 100;
}
test(a);
console.log(a);
var obj = { a:100 }
function test2(data){
data.a += 100
}
test2(obj);
console.log(obj);
总结
- 赋值传参时 , 基本类型传递的是其实际值, 而引用类型传递的是引用值.