gpt4 book ai didi

javascript - 为什么自定义函数引用一直指向旧函数

转载 作者:搜寻专家 更新时间:2023-11-01 04:52:37 25 4
gpt4 key购买 nike

我在“javascript design patterns”中找到了这个例子,并与下面代码的行为混淆了

这段代码创建了一个自定义函数:

var scareMe = function () {
alert("Boo!");
scareMe = function () {
alert("Double boo!");
};
};

现在我们将它引用到另一个变量

var prank = scareMe; 

令人困惑的部分是当我调用恶作剧时它应该更新 scareMe 而当我调用它时它应该警告“Double boo”不是吗?

但是结果是

prank(); // "Boo!"
prank(); // "Boo!"

如果我检查 scareMe 函数,它确实已被重新定义。

scareMe(); // Double boo!

prank 只是引用 scareMe 比为什么会有区别?

最佳答案

prank 不是对 scareMe 的引用(这在 javascript 中是不可能的),它是对函数对象的引用。这 2 个变量独立地引用同一个函数。

该函数显式覆盖 scareMe 指向的任何内容。它不会以任何方式影响恶作剧

看看这个:

scareMe = function() {
alert("Double boo!");
};

这没什么神奇的,它会重新分配最近的 scareMe 变量,恰好是全局变量。它不执行任何其他操作。

关于javascript - 为什么自定义函数引用一直指向旧函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898651/

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