javascript匿名函数变量赋值[重复]
Posted
技术标签:
【中文标题】javascript匿名函数变量赋值[重复]【英文标题】:javascript anonymous function variable assignement [duplicate] 【发布时间】:2016-03-27 03:03:13 【问题描述】:可能不是有史以来最好的问题,但我有一个疑问。
这样写有区别吗:
var myFunction = function myFunction () ;
myFunction.instance = null;
还有这个:
var myFunction = function () ;
myFunction.instance = null;
编辑:请仔细阅读,这不是 var functionName = function() vs function functionName() 的副本 上面的链接是在解释提升,这里是关于两个提升函数的分配,一个匿名,一个不。
【问题讨论】:
你真的关心myFunction.instance = null;
还是只关心函数定义
@Tushar OP 关注 function myFunction()
与 function()
@BhojendraNepal 这不是上述问题的欺骗。
这不是你指出的重复 :( 我知道提升..
其实我在那儿找不到我的问题的答案,如果你能解释一下。
【参考方案1】:
没有。没有区别1。
在这两种情况下,都会创建一个 new 函数对象(通过函数表达式),分配给变量,然后通过属性分配进行变异。
唯一的区别是一个函数分配了一个名称,这可能证明是有用的:参见myFunction.name
、myFunction.toString()
,或从函数范围内访问myFunction
。由于它是函数表达式(与函数声明相反),因此名称与定义范围内的变量无关; 1旧版浏览器的注意事项已在其他地方介绍。
【讨论】:
你说的基本正确,但是说“不。没有区别”然后说“唯一的区别”有点奇怪。区别在于 (1) 具有命名函数非常适合调试,但 (2) 它们可能会在旧浏览器中导致错误。其中第二个非常重要(例如:***.com/a/8548848/2407870)。 是的,它与大多数事情无关,但 OP 并没有真正说明他关心的 *什么* 差异,所以它可能是相关的。 这个说的很清楚了,不要在这些事情上浪费时间真的=D谢谢【参考方案2】:不是真的。
主要区别在于代码的大小(一条语句更长),因为将函数存储到变量中会忽略实际的函数名称:
var a = function b() ;
console.log(b); // Uncaught ReferenceError: b is not defined(…)
在您的情况下看起来相同的原因是您对两者使用相同的变量名,因此您的变量将指向函数。
另一个区别是从myFunction.toString()
和myFunction.name
返回的值,如pointed out by user2864740
var a = function b() ;
console.log(a.toString()); // "function b() "
var c = function() ;
console.log(c.toString()); // "function () "
【讨论】:
除此之外别无其他区别? =/ @FrançoisRichard 没问题,很乐意提供帮助。以上是关于javascript匿名函数变量赋值[重复]的主要内容,如果未能解决你的问题,请参考以下文章