说明一下
JavaScript里函数传的是值还是引用?答案是都传。如果传入的参数是简单类型,如String和Number,那么传入的就是值。但如果你传入的是Object和Array,那么就是引用。
这就意味着,在函数里怎么处理简单类型,都不会影响到函数外。如果是对象和数组,在函数里做的操作就会影响到函数外边。
举几个栗子
Number
function foo(num){ num++;}var x = 0;foo(x);console.log(x); // 0
String
function foo(str){ str+='b';}var x = 'a';foo(x);console.log(x); // 'a'
Array
function foo(arr){ arr[1]++;}var x = [0, 1, 2];foo(x);console.log(x); // [0, 2, 2]
Object
function foo(o){ o.num++;}var x = { num: 0};foo(x);console.log(x); // Object {num: 1}
结语
提问和纠错请留言。
相关: