繁体   English   中英

将更改的函数分配给另一个变量,并获得具有相同名称的不同主体

[英]Assign a changed function to another variable and get different body with same name

我声明一个功能

function hello(){console.log("Hello World!");}

然后将其分配给变量

newHello = hello;

在控制台中,我获得了hello和newHello函数的函数定义。

>newHello = hello;
ƒ hello(){console.log("Hello World!");}
>hello;
ƒ hello(){console.log("Hello World!");}

之后,我更改hello函数并将其分配给新变量,如下所示:

function hello(){console.log("Hello World Changed!");}
newNewHello=hello;

我得到了hello和newHello和newNewHello函数的函数定义,并收到以下结果:

>hello
ƒ hello(){console.log("Hello World Changed!");}
>newHello
ƒ hello(){console.log("Hello World!");}
>newNewHello
ƒ hello(){console.log("Hello World Changed!");}

为什么这些函数的名称相等但它们的主体是否相等?如果使用JavaScript语言,它们如何在后台工作?

当你写newHello = hello; ,您并不是说“从现在开始,当我再次查看newHello变量时, newHello将成为将来某个时候可能被称为hello的引用。”

而是说“ newHello现在将成为对现在称为hello的引用”。

因此,当您以后将hello更改为其他名称时,它根本不会影响newHello newHello仍然是对您先前分配给它的任何内容的引用。

换句话说,在第一次分配之后,您就没有这个了(我在这里使用→表示“是对”的引用):

newHellohello →(您的原始功能)

相反,你有这个:

hello →(您的原始功能)
newHello →(您的原始功能)

换句话说,两个hello直接引用原始函数。 因此,将hello更改为引用其他函数不会影响newHello

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM