[英]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.