首先得明确分为两大阵营,原始数据和对象
原始的数据的传递类型是传值传递
var num = 1;
function f(num) {
num = 2;
};
f(num);
console.log(num);
var num1 = 1;
var num2 = num1;
num2 = 3;
console.log(num1);
对象的传值是传递的地址,指向的是同一个地址,值改变,如果指向了其他的地址,改变不影响原始的值
var o = {
str: '传递方式'
};
function f2 (obj) {
obj.str = '地址传递'
}
f2(o);
console.log(o.str);
var o1 = {
str: '传递方式'
};
function f3(obj) {
obj = {
str: '地址传递'
}
}
f3(o1);
console.log(o1.str);
var obj = {
str: '变变变'
};
var obj2 = obj;
obj2.str = '粪粪粪';
console.log(obj.str);
其实关键看能够找到储存值的地址,找到了就能改变值本身。接下来咱们改变下原始类型的值
var num = 1;
function f1 (num) {
window[num] = 2;
};
f1('num');
console.log(num);