问题是,当整数,字符串和数组作为JavaScript中的函数参数传递时,有什么区别?
以下是我的问题:
<html>
<head>
<script>
var a = 0;
var b = new Array();
b.push(0);
function Add(num) {
num++;
}
function Add1(num) {
num[0]++;
}
Add(a);
Add1(b);
alert(a);
alert(b[0]);
</script>
</head>
<body></body>
</html>
它最终提供了两个不同的价值,为什么呢?第一个结果为0,第二个结果为1
最佳答案
作为对象的数组通过引用在函数中传递,而基元(例如字符串和数字)通过值传递。这是一个例子:
function test(arr, obj, prim) {
arr[0]++; // by reference
obj.prop++; // by reference
prim++; // by value
return prim; // to get the amended primitive value back
}
var arr = [0],
obj = { prop: 0 },
prim = 0,
result;
result = test(arr, obj, prim);
console.log(arr, obj, prim); // [1], Object {prop: 1}, 0
console.log(result); // 1
好的文章:http://snook.ca/archives/javascript/javascript_pass