在编辑别人的代码时,我遇到了一个我以前没有见过的模式:
var functionName = function functionName(){};
稍后,使用这个 jQuery 调用函数
$(functionName);
现在,在我将其更改为function functionName(){}
名为 with的标准之前functionName();
,是否有任何理由这样做?
编辑:更新以反映函数调用中 jQuery 的使用。我过度简化了这个例子。(哎呀,对不起!)
在编辑别人的代码时,我遇到了一个我以前没有见过的模式:
var functionName = function functionName(){};
稍后,使用这个 jQuery 调用函数
$(functionName);
现在,在我将其更改为function functionName(){}
名为 with的标准之前functionName();
,是否有任何理由这样做?
编辑:更新以反映函数调用中 jQuery 的使用。我过度简化了这个例子。(哎呀,对不起!)
var workerFn = function someDefaultFn() {};
if ( lots of logic) {
workerFn = function specialFn() {};
}
//// later on
workerFn();
所以现在我们可以灵活地确定究竟调用了什么。有点像穷人的多态性。在您的示例中,我们会将 workerfn 传递给要调用的 JQuery,因此具有相同的灵活性可能性。
使用函数表达式的唯一技术原因是避免提升函数和/或能够使用另一个内部名称来引用函数本身。
这些是函数表达式和函数声明之间的唯一区别,它们是否相关取决于上下文。
函数名;
不会调用该函数。这只是对函数的引用。调用函数需要()
. 所以如果我们有
var functionName = function test(){ alert("0");};
这个
functionName;
不叫它。实际上这根本没有做任何事情(无操作)。这与
var x;
x;
只有这个
functionName()
调用它。
也许functionName;
用于其他用途。我们只有在有上下文的情况下才能判断。
我会说这是一个错误,因为functionName;
不会做任何事情。还是您的问题中的错字?
[编辑]
您可以通过这种方式找到var functionName = function(){};
并创建尽可能多的实例var second = functionName;
只有当您希望使用少量变量来调用相同的函数但使用不同的参数时才有帮助...
但是在您的情况下, functionName 将仅包含function functionName() {};
将返回的内容。
您可能在函数内容中有这样的内容:
var functionName = function test(param) {
[...]
return function(otherParam) {
//do something
};
}