有关于这个问题here
函数可以有一个名字,如果指定了不能改了很多有用的信息。函数也可以像JavaScript中的任何其他对象一样分配给变量。
第一个例子是一个函数声明:
function myfunc(){
}
使用函数的声明,你将能够在该函数声明封闭范围内的任意位置调用该函数,即使是后宣布它被使用。
另外两个例子是函数表达式:
var myvar = function(){
/*some code*/
}
var SqueezeBox= {
presets: {
onOpen:function(){/* empty function body */},
onClose:function(){/*empty function body */}
}
}
使用你给一个变量赋值功能函数表达式。当你这样做时,你必须在使用它们之前声明它们。大多数时候,你看到这个功能将是匿名的,但它有可能举出在表达式中的函数:
var myvar = function myFunc(){
myFunc(); // Because it has a name you can now call it recursively
}
如果这样做,myFunc
功能是唯一可用的函数体中,因为它是仍然是函数表达式而不是声明。
第三个示例声明了一个javascript对象字面值SqueezeBox
,在该对象内有另一个名为presets
的对象。在这个对象内还有两个对象/标签,称为onOpen
和onClose
。这意味着你可以做以下使用这些功能:
SqueezeBox.presets.onOpen();
SqueezeBox.presets.onClose();
你可以认为的OnOpen和OnClose中的作为作为对象的部分变量。因此它与进行以下操作非常相似(但该变量仅在presets
对象的范围内,该对象仅在SqueezeBox
对象中可用)。
var onOpen = function() {};
第二个例子是无效的,我想你想写'VAR MYVAR =函数(){} [VAR functionName =函数(){} VS功能使用functionName(){}'的可能 –
重复](http://stackoverflow.com/questions/336859/var-functionname-function-vs-function-functionname) – CodingIntrigue
最后一个是匿名函数,作者如何调用函数或为该函数设置一些代码。 –