JavaScript の関数が参照型 (単純な型とは異なり、参照によってコピーされる) である場合、ここで正確に何が起こっているのでしょうか?
var func = function() { alert(1); };
var func_alias = func;
var func = function() { alert(2); };
func_alias(); //1
func_alias
が への参照である場合func
、更新されないのはなぜですか? その呼び出し (4 行目) が返されると思いません2
か?
これは、他の参照による例とは異なる動作です。
var obj = {prop: 'val'};
var obj_alias = obj;
obj.prop = 'updated val';
alert(obj_alias.prop); //updated val - not original one
func_alias
元の上書き前のコピーを保持しているようですfunc
-要するに、値によってコピーされたかのように動作するようです。もちろん、これは次のように反証されています。
var func = function(){}
var func_alias = func;
func === func_alias; //true