簡體   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