1、js基本数据类型值传递,对象引用传递;
2、形参和内部同名变量是同一个参数;
function f1(a) {//相当于首先var a=10;
console.log(a);// 10;
var a=1;
console.log(a);// 1
console.log(arguments[0])// 1;
}
f1(10)
var x=2,y=0,z=0;
var obj={name:'haha'};
function add1(num){
num=num+1;
return num;
}
function add2(num){
num=num+2;
}
function changeobj(obj){
obj.name='erha';
}
z=add1(x);
y=add2(x);
changeobj(obj);
var result=add1(x)+add2(y);
console.log('x:'+x);//2
console.log('y:'+y);//undefined
console.log('z:'+z);//3
console.log(obj);
console.log(typeof result);//number
console.log(result);//NaN
/*
typeof NaN=="number"
typeof 2==="number"
*/
var foo = {n : 1};
(function(foo) {
console.log(foo.n);//1
foo.n = 3;
var foo = {n : 2};//新的堆地址,不影响外层foo
console.log(foo.n);//2
})(foo);
console.log(foo.n);//3