JavaScript的; 通过分配给变量创建的函数?
这个问题在这里已经有了答案:
这被称为函数表达式:
var foo = function() {}
这是一个函数声明:
function foo() {}
主要区别在于函数声明是“悬挂”的。 在幕后,一个函数声明被“悬挂”到其作用域的顶部并被分配给一个变量名 - 与函数表达式实际上是一样的。
考虑这个:
foo(); //logs 'abc'
function() {
console.log('abc');
}
这很好,因为foo
会被吊起来。 用函数表达式,这将失败:
foo(); //foo is not defined!
var foo = function() {
console.log('abc');
}
关于函数表达式的一点非常棒的是,您可以使用IIFE(立即调用的函数表达式)来分配它们的值,并具有如下的私有值和函数:
var myFunc = (function() {
function thisWillBeMyFunc() {
doOne();
doTwo();
doThree();
}
function doOne() {
console.log('Action 1!');
}
function doTwo() {
console.log('Action 2!');
}
function doThree() {
console.log('Action 3!');
}
return thisWillBeMyFunc;
}());
myFunc(); //logs the actions
doOne(); //error - not defined!
现场演示(点击)。
哦,JavaScript的强大功能和灵活性!
还有一个区别。 第一个创建一个命名函数,第二个选项将创建一个匿名函数。
在查看堆栈跟踪时,第二个选项将显示为匿名函数,第一个将显示为named。 您可以看到第一种方法在调试时会给您一些洞察。
在这里和这里进一步引用。
链接地址: http://www.djcxy.com/p/96293.html上一篇: Javascript; functions created by assigning to a variable?