//值类型: string number boolean undefined
// 存储的就是数据本身的变量就是值类型的数据
var str = "你是天边最美的云彩";
var str1 = str;
str = "让我用心吧你留下来,留下来";
console.log(str1);
var num1 = 110;
var num2 = num1;
num1 = 119;
console.log(num2); //110
//引用类型:object
// 存储的是数据在内存中的地址,数据在内存中单独存储 就是引用类型的数据
var p1 = {
name : "郭富城",
age : 60
}
var p2 = p1;
p1.name = "潘明";
p1.age = 16;
console.log(p2.name, p2.age);//潘明,16
//值类型做函数的参数
//函数内部的变量,也就是形参和实参只是简单的赋值操作,两个数据独立存储于内存中的
//在函数内部对形参进行修改,不会影响外面的变量
var num = 10;
function changeNumber( num1 ){
var num1 = 100;
console.log(num1); //10 or 100
}
changeNumber(num);
console.log(num); //10 or 100
//引用类型做函数的参数
//还是把实参存储的地址赋值给了形参,在函数内部,形参同样也指向该对象,
//所以,在函数内部对该对象进行修改,会影响到外面的变量
//注意:如果在函数内部重新创建对象,为该形参赋值,那么两个对象将不再有关系
//修改其中一个,另外一个不受影响
function jinhua(param){
//param = obj
param.name = "高富帅";
//下面的这句代码,重新创建了一个对象,修改了param的指向
//但是,obj还指向原来的那个对象 所以,在修改param的时候,修改的是
//新创建的对象,跟obj没有关系
param = {
name:"腐女"
};
param.name = "宅男";
return param.name;
}
console.log(jinhua(obj));
console.log(obj.name); //高富帅 or 宅男 or 腐女