我一直在寻找连续两天但却无法找到答案。在函数声明中使用函数表达式有什么好处吗?
我正在阅读的书(Head First JavaScript)介绍了函数表达式,并且解释听起来像是它与函数声明相同,但接着说它们是&#34 ;略有不同" - 但没有解释其中的差异!
我能找到的唯一区别是,如果在定义函数之前调用函数,则在使用表达式时可能会出错,但如果使用声明(由于提升)则不会。宣言,1。表达,0。
但是,根据我的理解,声明使用函数的名称创建变量,并在该变量中存储对函数的引用。
使用表达式,可以在您选择的变量中存储对匿名函数的引用。
如果是这种情况,那么这两个例子在各个方面都不相同,除了上述由于提升而使用表达式时出现错误的风险?
声明:
function myFunction(name) {
alert("Hello " + name);
}
表达式:
var myFunction = function(name) {
alert("Hello " + name);
}
我可以用以下任何一个调用:
myFunction("John");
我也可以将一个变量分配给另一个变量,然后调用该变量,以便以下两种情况都有效:
var myFunctionDammit = myFunction;
myFunctionDammit("Steve");
我无法弄清楚为什么你会创造一个函数表达式,而我能找到的唯一区别实际上是一个缺点。
什么情况需要表达以及为什么?什么是最佳做法?我应该养成使用其中一个的习惯吗?
有一个类似的问题(var functionName = function() {} vs function functionName() {}),但大多数答案都集中在解决技术差异(提升),但没有解释为什么我想要选择一个函数表达而不是声明。无论是那个还是我根本无法理解答案。
有人可以用初学者理解的简单术语来解释它吗?