[英]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
仍然是对您先前分配给它的任何内容的引用。
换句话说,在第一次分配之后,您就没有这个了(我在这里使用→表示“是对”的引用):
newHello
→ hello
→(您的原始功能)
相反,你有这个:
hello
→(您的原始功能)
newHello
→(您的原始功能)
换句话说,两个hello
直接引用原始函数。 因此,将hello
更改为引用其他函数不会影响newHello
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.