let sayBye = function () {
console.log(`Bye`);
}
let bye = sayBye;
sayBye = null; // X
bye(); // Y
在问这个问题之前,我在谷歌搜索,我发现 this邮政。然后我想,在第 X 行之前,结构类似这样:
sayBye ---------------
|
| => function() {....}
|
bye-------------------
在 x 行之后,我认为它是这样的:sayBye MEMORY
| => function() {....}
|
bye-------------------
但是当我在 Firefox 开发人员工具中写再见时,我看到了这个这怎么可能?当我写
let bye = sayBye;
sayBye 被复制了吗?let sayBye = function () {
console.log(`Bye`);
}
let bye = sayBye;
sayBye = null; // X
bye(); // Y
console.log(bye);
最佳答案
Variables and methods can infer the name of an anonymous function from its syntactic position (new in ECMAScript 2015).
Chrome 和 Firefox 都提供
"sayBye"
打印时 bye.name
.根据个人实验,Chrome 控制台显示
bye.toString()
当要求 bye
,而 Firefox 显示了他们的自定义输出,其中显示了推断的函数名称(这确实很有意义,因为知道名称通常有助于调试)。
关于javascript - 如何将 JavaScript 函数表达式保存在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64966899/