use*_*807 4 javascript reference function
我无法弄清楚通过引用传递和通过值传递的内容(我知道它们在理论上的含义).你能告诉我下面的函数是否通过值ore参考传递参数?BTW这是我的第一篇帖子:)
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?*/
Run Code Online (Sandbox Code Playgroud)
原始类型
在javascript中,字符串,布尔值属于基元类别.每当这些类型作为参数传递给函数时,在函数作用域内创建一个单独的副本,这对外部作用域没有影响
例如
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
}
Run Code Online (Sandbox Code Playgroud)
参考类型
参考类型略有不同
以下面的例子为例
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
}
Run Code Online (Sandbox Code Playgroud)
如果它是通过引用传递的,obj.property
应该在fn中的最后一个语句后更改为"test 2",但它没有.因此,在将参考值传递给函数时,会传递指向该对象的指针的单独副本.