package {
import flash.display.Sprite;
public class test1 extends Sprite {
private var tmp:Object;
public function test1() {
createObj(tmp);
if(tmp == null) {
trace("nothing changed");
}
}
private function createObj(obj:Object):void {
obj = new Object();
}
}
}
在上面的代码中,控制台上的输出是:
没有改变
为什么呢?
如果createObj的参数是通过引用传递的(这是 actionscript的默认行为),为什么没有被修改?
答案 0 :(得分:4)
您没有传递参考。您正在传递分配给局部变量null
的{{1}},以便在函数中使用。
Passing arguments by value or by reference:
通过引用传递 意味着 只提到参数是 传递而不是实际值。没有 制作实际参数的副本。 相反,对变量的引用 传递作为参数创建和 分配给局部变量使用 在功能中。
在obj
中,您正在创建一个必须返回的新引用:
createObj