js的传递方式

回头过来复习一下。

从一个变量向另一个变量复制的时候,复制过去以后,都是单独独立的变量,当你改变其中一个的时候,并不会影响另一个变量。他们只是value相同而已;

var a = 1;

var b= a;

b += 1;

console.log(a);   // 1

console.log(b);  //2

// 对象赋值,改变的只有指针。其中的值并没有改变 他们不是相对独立的
var a = new Object();
a.name = 1;

var b = a;
 b.name = 5;

console.log(b); //5
console.log(a); // 5
 
 
// .函数传递值类型:
// 声明变量num并复制为10,这个是num是一个值类型,当为函数传递参数的时候,是将此值复制一份传递给函数,所以在函数执行之后,num本身的值并没有被改变,函数中被改变的值仅仅是一个副本而已。
var a = function(num){
num +=10;
return num;
}
var num = 10;
var b = a(num);

console.log(num); //10
console.log(b); //20
 

// 函数传对象
//这个地方的和对象传值一样 传递的是指针 所以当a当做参数传入b的时候,在b里发生了改变,所以,a的name也发生改变
var a = {
name:"tom"
}
function b(c){
c.name = "cyd";
return c;
}
var d = b(a);

console.log(d.name); //cyd
console.log(a.name); //cyd
 
 
//这时候的的传值 我理解的是:在不同作用域下的俩个对象 是相互独立的,不干扰的;所以传过来的值没有变化
var a = {
name:"tom"
};
function b(c){
c={
name:"cyd"
}
return c;
}
var d = b(a);
console.log(d.name); //cyd
console.log(a.name); // tom
 
 
还有很多不足的地方,希望给予指正。
 
 
原文地址:https://www.cnblogs.com/chenyudi/p/11069546.html