给定 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