gpt4 book ai didi

javascript - 变量名和函数名的意义相同吗?

转载 作者:行者123 更新时间:2023-11-28 13:34:27 25 4
gpt4 key购买 nike

在一些 JavaScript 代码中,我看到变量引用同名的函数,例如:

var Automobile = function Automobile() {
this.someProperty = 1;
}

它与 var Automobile = function() {...} 的目的是什么

甚至:

var Automobile = function AnythingBesidesAutomobile() {...}

可能有调试帮助吗?

最佳答案

为函数实例化中创建的函数提供本地名称,使得该函数可以独立于任何外部(闭包)变量来引用自身。考虑:

var foo = function() {
// do something
setTimeout(foo, 1000);
};

setTimeout(foo, 1000);

foo = 23;

因为函数内部的代码依赖外部符号“foo”来访问自身,所以第一次超时后就会失败。但是:

var foo = function foo() {
// do something
setTimeout(foo, 1000);
};

setTimeout(foo, 1000);

foo = 23;

现在它可以工作了,因为函数内的“foo”指的是function关键字之后给出的名称,而不是封闭范围中的“foo”。

你说它是一种调试辅助工具,这也是对的。例如,如果您正在设置事件处理程序(请原谅 jQuery):

$(document).on('click', 'button', function() {
// do all sorts of complicated stuff
});

当出现问题时,在堆栈跟踪中显示名称真是太好了:

$(document).on('click', 'button', function buttonClickHandler() {
// ...
});

最后,this used to be problematic due to bugs ,但我认为在较新的 JavaScript 运行时环境中,很多问题已经得到解决。

关于javascript - 变量名和函数名的意义相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22540528/

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