function myfunc(){}
函数声明:使用标准语法声明函数
function functionName(params[]) {
//functionbody
}
使用此语法在作用域执行开始时声明函数,因此它们将在其作用域(及其后代作用域)的任何地方可用。
var s = myfunc(); //s == 0
function myfunc() {return 0;}
var myfunc = function() {};
这使用称为函数表达式的模式,它只是将匿名函数的引用分配给名为 的变量myfunc
。在解析变量之前,使用此语法将不允许您使用该函数。即使变量被提升到其作用域的顶部,它们也会在解释器解析它们时被初始化,所以上面的例子不起作用:
var s = myfunc(); //ReferenceError: myfunc is not defined
var myfunc = function() {return 0;};
但是下面的示例将:
var myfunc = function() {return 0;};
var s = myfunc(); //s == 0
第三个示例只是以我们刚刚使用函数表达式的方式将匿名函数分配给对象属性(也称为对象方法),因此如果我使用上面的模式,代码将变为:
var onOpen = function() {},
onClose = function() {},
SqueezeBox = {//curly braces denotes an object literal
presets: {//again, this is a nested object literal
onOpen: onOpen,
onClose: onClose
}
};
这与您的示例完全相同,唯一的区别是在这里我使用变量来获取对匿名函数的引用,然后再将其传递给对象。如果您需要了解有关对象的更多信息,我建议您阅读MDN 文档。无论如何,如果你真的对 JS 的工作原理感兴趣,我会推荐Javascript Garden,这是一篇关于 JS 的非常好的文章。