【发布时间】:2012-08-11 13:34:29
【问题描述】:
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
【问题讨论】:
标签: javascript function reference variable-assignment