Yus*_*lim 8 javascript anonymous-function
我正在读一本名叫"John Ninja的秘密"的好书,由John Resig和Bear Bibeaoult撰写.在第3.2章中,它给出了一个例子;
var canFly = function(){ return true; };
Run Code Online (Sandbox Code Playgroud)
然后它说;
创建匿名函数并将其分配给名为canFly的全局变量.由于JavaScript的功能特性,可以通过此引用调用该函数作为canFly().在这方面,它几乎在功能上等同于声明一个名为"canFly"的命名函数,但并不完全相同.一个主要区别是函数的name属性是"",而不是"canFly".
但是当我尝试在Chrome的开发者工具上执行该示例并检查函数的name属性时canFly,它返回值"canFly"而不是空字符串.
canFly.name;
// > "canFly"
Run Code Online (Sandbox Code Playgroud)
分配给变量的匿名函数在前几天没有名称吗?如果是这样,发生了什么变化?或者作者犯了错误?
理论上,匿名函数是匿名的,意思是无名的。这就是它最初的实施方式,十多年来,每个人都对此表示满意。
然后发生了两件事:整个 Web2.0/ajax 运动,人们开始在网页和 Node.js 中实现桌面应用程序中常见的 UI 功能。这两者的结合迫使越来越多的开发人员将 javascript 视为一种严肃的语言,一旦人们熟悉了 javascript,他们就开始编写非常大的代码库。
这导致了人们对 javascript 的可调试性的抱怨。从没有任何有用的调试器(这让我们在浏览器中找到了非常好的调试器,在我看来,它仅次于 MS Visual Studio),到不知道 console.log 来自什么函数(因为它们是匿名的),其中有很多问题。 。
这导致浏览器和 js 引擎开发人员实现试图猜测无名函数“名称”的代码。
理论上,此功能是错误的,因为您不能总是保证您猜测的名称就是函数的调用方式(例如,如果函数被分配给多个不同的变量)。在实践中,90% 的情况下都有效的东西总比什么都没有好。
| 归档时间: |
|
| 查看次数: |
534 次 |
| 最近记录: |