gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:18:38 25 4
gpt4 key购买 nike

我声明一个函数

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 变量时,hello 将成为对任何可能命名为 newHello 的引用。”

相反,您是说“newHello 现在将成为对名为 hello 现在的任何内容的引用。”

所以当你稍后更改hello时成为其他东西,并不影响newHello根本不。 newHello仍然是对您之前分配给它的任何内容的引用。

换句话说,在第一个作业之后,你就没有这个(我使用 → 来表示“是对”的引用:

newHellohello →(你原来的函数)

相反,你有这个:

hello →(你原来的函数)
newHello →(你原来的函数)

换句话说,hello直接引用原来的函数。如此改变hello引用不同的函数不会影响 newHello .

关于javascript - 将更改后的函数分配给另一个变量并获得具有相同名称的不同主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45625996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com