var username="小明"; function fn1(name){ name="小强"; } fn1(username); console.log(username) //输出 小明 // 分析:基本类型传递是按照值来传递的 // 如果传参是基本数据类型, 传入函数后,都会变成局部对象,所以对局部对象的修改,对原始值没有影响 // 而这个局部对象 也会在函数执行完毕后,立刻被销毁。 var user={name:"小红"}; function fn2(obj){ obj.name="大红"; } fn2(user); console.log(user) //输出 {name: "大红"} //分析:引用类型是按照地址传递的。 /* 如果传参是 引用类型 ,传入函数后, 函数实参对传入对象有一个引用 即(函数内所有的修改都是对引用对象的修改 所以user对象的值会发生改变) */