gpt4 book ai didi

javascript - 函数声明的困惑

转载 作者:行者123 更新时间:2023-11-30 13:04:23 25 4
gpt4 key购买 nike

如果我将命名函数分配给变量,为什么我无法访问命名函数:

var a = function b() {
console.log("Hello World");
}
a() // hello world;
b() // b is not defined
b // b is not defined

而此时,我不能删除a变量,但是我可以删除b,当我删除b时, a的功能还是可以的

delete a //false
delete b //true
a() //Hello World

b函数不只是被a引用,不是copy,为什么a函数还在?

最佳答案

如果您使用命名函数表达式(不是函数声明!),函数名称只能在函数内部访问。

来自specification (“标识符”是指函数的名称,即 function Identifier() {}):

The Identifier in a FunctionExpression can be referenced from inside the FunctionExpression's FunctionBody to allow the function to call itself recursively. However, unlike in a FunctionDeclaration, the Identifier in a FunctionExpression cannot be referenced from and does not affect the scope enclosing the FunctionExpression.


but I can delete b

不,你不能。当您传递任何不是对 delete 的引用或引用无法解析时,it will return true .


这是一篇关于所有函数定义内容的好文章:http://kangax.github.io/nfe/ .

关于javascript - 函数声明的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16232706/

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