<分区>
我无法弄清楚按引用传递和按值传递是什么样子的(我知道它们在理论上的含义)。你能告诉我下面的函数是否按值或引用传递参数吗?顺便说一句,这是我的第一篇文章:)
var number_1 = 32;
var number_2 = 43;
function addition(num1,num2) {
alert (num1*num2) ;
}
addition(number_1,number_2); /*is this passing by reference?*/
<分区>
我无法弄清楚按引用传递和按值传递是什么样子的(我知道它们在理论上的含义)。你能告诉我下面的函数是否按值或引用传递参数吗?顺便说一句,这是我的第一篇文章:)
var number_1 = 32;
var number_2 = 43;
function addition(num1,num2) {
alert (num1*num2) ;
}
addition(number_1,number_2); /*is this passing by reference?*/
最佳答案
原始类型
在 javascript 中,数字、字符串、 bool 值属于基元类别。 每当将此类类型作为参数传递给函数时,都会在函数范围内创建一个单独的副本,这对外部范围没有影响
例如
var number_1 = 32;
var number_2 = 43;
addition(32,43);
//number_1 is 32 here
//number_2 is 43 here
function addition(number_1,number_2) {
number_1 += 1; // number_1 is 33
number_2 += 1; // number_2 is 44
}
引用类型
引用类型略有不同
举个例子
var obj = new Object();
fn(obj);
function fn(object){
object.property = "test";
//obj.property is "test"
object = new Object();
object.property = "test 2";
//obj.property is still "test"
//obj.property should have changed to "test 2",
//if it had been passed by reference
}
如果它是通过引用传递的,obj.property
应该在 fn 中的最后一条语句之后更改为“test 2”,但事实并非如此。
因此,当将引用值传递给函数时,会传递指向对象的指针的单独副本。
关于javascript - 以下 Javascript 函数是按值还是按引用传递参数?我不确定如何区分两者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25276762/