var obj = {a:1};
((obj)=>{
console.log(obj.a);
obj.a = 3;
var obj = {a:2};
console.log(obj.a);})(obj)
console.log(obj.a)
//1
//2
//3
obj是引用类型,作为参数的时候是复制一份指针保存在内存中的,所以obj.a=3是会改变原来的obj对象,但函数内obj被重新赋值的时候原来的指针就被覆盖了,和函数外面的obj没有关系了,可以参考http://t.csdn.cn/najPA