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}