Javascript - 将函数赋值给变量(引用/值)

Mar*_*cus 1 javascript

我试图改变一个函数的定义:

var a = function(){alert('a');};
var b = a;
b = function(){alert('b');};
Run Code Online (Sandbox Code Playgroud)

这导致变量a保持其原始赋值,即函数生成alert('a').

有没有办法传递一个javascript函数的引用,以便我以后可以改变它?

Viv*_*ath 5

您是否希望a在以下代码段之后更改价值?有疑问的片段:

var a = 10;
var b = a;
var b = 20;
Run Code Online (Sandbox Code Playgroud)

没有权利?所以,你为什么会想到重新分配b影响a

在行之后1,您a指向了一个函数实例:

在此输入图像描述

在行之后2,您有一个新变量b,指向同一个函数实例.所以现在你有两个变量,都指向同一个实例:

在此输入图像描述

在行之后3,您已经重新分配b给其他东西(一个新函数),但a 仍然指向原始函数:

在此输入图像描述

通过这样做,你可以做你想做的事:

var func = function() { alert("a"); };

var a = function() { func(); };
var b = a;

func = function() { alert("b"); };
Run Code Online (Sandbox Code Playgroud)

现在调用a()b()将警告字符串b.