值类型和引用类型

//值类型:  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 腐女
posted @ 2018-05-28 19:11  V仔BOKE  阅读(126)  评论(0编辑  收藏  举报