gpt4 book ai didi

javascript - 匿名函数赋值给标识符后,为什么能得到它的名字?

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

我正在阅读《Secret JavaScript Ninja》一书。书上说如果你给一个变量赋值一个匿名函数,如果你引用name属性,它不会包含变量的名称,但是如果我引用这个属性,我看到了。

这怎么可能?

var canFly = function(){return true}
console.log(canFly.name)

但是,如果我通过窗口对象的属性声明函数,函数名称会丢失

window.isDeadly = function(){ return true}
console.log(window.isDeadly.name === '')

为什么我在书中描述的第一个陈述是不恰当的?

最佳答案

根据MDN page about Function.prototype.name :

Variables and methods can infer the name of an anonymous function from its syntactic position (new in ECMAScript 2015).

似乎在 obj.prop = ... 形式的属性赋值中声明函数不符合自动函数名称定义的条件:

var foo = {};
foo.prop = function() { return true; };
console.log(foo.prop.name); // ""

您可能正在阅读第一版“JavaScript 忍者的 secret ”(2008 年出版)。这个版本是关于一个现在已经过时的旧 JavaScript 版本。那时甚至对变量的赋值也不会导致自动定义函数名(至少没有指定)。我强烈建议您获取第二版(2016 年)的副本,其中还包括 ES2015 中引入的功能。

关于javascript - 匿名函数赋值给标识符后,为什么能得到它的名字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54031543/

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