gpt4 book ai didi

javascript - 为什么javascript中的匿名函数有名字?

转载 作者:数据小太阳 更新时间:2023-10-29 04:17:49 27 4
gpt4 key购买 nike

我正在读一本名为“JavaScript 忍者的 secret ”的好书,作者是 John Resig 和 Bear Bibeault。 3.2章节给出了例子;

var canFly = function(){ return true; };

然后它说;

An anonymous function is created and assigned to a global variable named canFly. Because of JavaScript's functional nature, the function can be invoked through this reference as canFly(). In this respect, it's almost functionally equivalent to declaring a named function named "canFly", but not quite. One major difference is that the function's name property is "", not "canFly".

但是当我尝试在 Chrome 的开发者工具上执行示例并检查 canFly 函数的 name 属性时,它返回值“canFly”而不是空值字符串。

canFly.name;
// > "canFly"

早期赋值给变量的匿名函数是没有名字的吗?如果是这样,发生了什么变化?还是作者弄错了?

最佳答案

理论上匿名函数是匿名的,意思是无名。这就是它最初的实现方式,十多年来,每个人都对此表示满意。

然后发生了两件事:整个 Web2.0/ajax 运动,人们开始在网页和 node.js 的桌面应用程序中实现常见的 UI 功能。这两者结合迫使越来越多的开发人员将 javascript 视为一种严肃的语言,一旦人们习惯了 javascript,他们就会开始编写非常大的代码库。

这导致了对 javascript 可调试性的提示。从没有任何有用的调试器(这导致我们在浏览器中使用了非常好的调试器,在我看来仅次于 MS Visual Studio)到不知道 console.log 来自什么功能(因为它们是匿名的),有很多原因.

这导致浏览器和 js 引擎开发人员实现了尝试猜测无名函数“名称”的代码。

从理论上讲,此功能是错误的,因为您不能始终保证您猜测的名称就是函数的调用方式(例如,如果函数被分配给多个不同的变量)。在实践中,90% 的时间都有效的东西总比什么都没有好。

关于javascript - 为什么javascript中的匿名函数有名字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45147093/

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