JavaScript的适当函数约定
我一直在学习Codecademy JavaScript课程,他们告诉我们使用如下函数:JavaScript的适当函数约定,javascript,Javascript,我一直在学习Codecademy JavaScript课程,他们告诉我们使用如下函数: var functionName = function(parameters) {}; function myFunction(parameters){} 我以前做过一些JavaScript,我总是这样做: var functionName = function(parameters) {}; function myFunction(parameters){} 正确的方法是什么?有什么区别吗?我应该在
var functionName = function(parameters) {};
function myFunction(parameters){}
我以前做过一些JavaScript,我总是这样做:
var functionName = function(parameters) {};
function myFunction(parameters){}
正确的方法是什么?有什么区别吗?我应该在什么时候使用它们
谢谢 这取决于,一般来说,对于正常功能,您将希望使用第二种方式:
function myFunction(parameters) {
}
如果需要,您可以使用第一种方法将函数分配给变量,也可以通过混合和匹配
// Assign an anonymous function to functionName
var functionName = function (parameters) {
}
// Assign a pointer to myFunction to functionName
var functionName = myFunction
但是,这些函数的作用稍有不同,想象一个包含这些函数的循环,第一个循环每次迭代都会生成一个新函数,而第二个循环只引用一个已经存在的函数
for (var i = 0; i < 10; i++)
// Creates 10 functions
var functionName = function (parameters) {
}
// Uses an existing function
var functionName = myFunction
}
我意识到了一些差异
function myFunction(parameters){}
上述函数在代码中的位置之前和之后都是可调用的
var functionName = function(parameters) {};
只有在代码运行(即对象已定义)后,才可调用此函数
所以你可以这样做
if(condition) {
var functionName = function(parameters) {};
}
if(functionName != undefined) { functionName(); }
也可以将它们用作回调
function anotherMethod(parameters, callbackFunction){
// Do things with parameters
callbackFunction(parameters);
}
var functionName = function(parameters) {};
anotherMethod(parameters, functionName);
另外,可能最重要的事情通常是后一种格式允许使用名称空间,而不是在全局空间中收集所有函数,这可能会导致在使用多个大型库的大型项目中出现重复的函数名
var uniqueName1 = {
firstFunction: function(){},
secondFunction: function(){},
};
var uniqueName2 = {
firstFunction: function(){},
secondFunction: function(){},
};
uniqueName1.firstFunction();
uniqueName2.firstFunction();
不同之处在于,当您执行以下操作时:
functionName();
var functionName = function(parameters) {};
//you get error
functionName1();
function functionName1(parameters) {};
//you get no error
原因是javascript预解析代码。
我建议使用第二种创建对象的方法。这两种方法都是正确的。性能可能会有所不同。有关差异的另一详细解释,请参见此: