JavaScript 匿名函数
函数声明
function x(){}
函数表达式
下面等号右侧的 function ... 部分就是一个函数表达式
var x=function... // 比如 var a = function() {} // function() {} 是函数表达式,我们称其为匿名函数表达式 var b = function c() {} // function c() {} 也是表达式
函数定义
一个具有了名字的函数表达式就可以称为函数定义
匿名函数定义
所谓匿名函数定义,其本身是表述为:
aName = FunctionExpression
或类似于此的语法风格的。它可以用在
- 一般的赋值表达式
var x x=function(){}
- 变量声明的右操作数
var x=function(){}
- 以及对象声明的成员初始值
let obj={ x:function(){} }
在这些位置上,该函数表达式总是被关联给一个名字。一方面,这种关联不是严格意义上的“名字 -> 值”的绑定语义;另一方面,当该函数关联给名字(aName)时,JavaScript 又会反向地处理该函数(作为对象 f)的属性 f.name,使该名字指向 aName。
这种情况下,我们说这个匿名函数不是真正匿名的,因为我们其实能拿到这个函数的名字
var x=function(){} console.log(x.name) // x let obj={ x:function(){} } console.log(x.name) // x
所谓匿名函数,仅仅是当它直接作为操作数(而不是具有上述“匿名函数定义”的语法结构)时,才是真正匿名的,我们拿不到它的名字,例如
console.log((function(){}).name); // ""
export default function() {}
export default function() {}
并不是导出了一个匿名函数表达式,而是导出了一个匿名函数定义。
我还不懂上面这句话。准确的说,我理解后半句而是导出了一个匿名函数定义,不明白前半句 并不是导出了一个匿名函数表达式
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: ES6 函数执行 中的变量
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论