Javascript 函数和回调的代码约定

Javascript 函数和回调的代码约定,javascript,Javascript,所以我开始学习JavaScript,我注意到函数和回调的编码约定是这样的(这是一个jQuery示例,但我在任何地方都看到过): 来自其他语言,我通常会这样写: function myFunction(myVar){ //do stuff with myVar here }; $.getJSON('some/url.json', myFunction()); 为什么前者通常是用JS编写的首选方式,而不是后者(可能更可读)?这不是首选方式。你可以做任何你想做的事。但是,如果需要重用该函数,则需要

所以我开始学习JavaScript,我注意到函数和回调的编码约定是这样的(这是一个jQuery示例,但我在任何地方都看到过):

来自其他语言,我通常会这样写:

function myFunction(myVar){
//do stuff with myVar here
};

$.getJSON('some/url.json', myFunction());

为什么前者通常是用JS编写的首选方式,而不是后者(可能更可读)?

这不是首选方式。你可以做任何你想做的事。但是,如果需要重用该函数,则需要执行第二个选项,或者执行以下代码重用操作:

// in some accessible context/namespace
App.myCallback = function(a){
...
};

// somewhere else
$.getJSON('url', App.myCallback);

第一个示例是所谓的匿名函数或块。当它们只被调用一次时使用。第二个例子是当您多次使用该函数时。。。如果你一遍又一遍地重复匿名块,那将是大量的浪费输入。

有很多很好的理由使用第二种更明确的格式(假设你解决了评论中列出的问题),包括:

  • 重用作为回调传递的函数
  • 为该函数指定一个明确的名称,以便于调试
  • 确保该功能在系统中是重要的
  • 分离这些函数,因为它太长,无法轻松地在适当的位置声明

但是,第一种格式(带有作为回调传递的匿名函数)既短又甜。如果您不需要重用该函数,如果它相对较短,并且在您的系统中不是很重要,那么将它准确地声明在您使用它的地方是非常有用的。您避免向作用域中添加另一个变量,并且完全清楚该函数的用途。

第二个示例不起作用(您实际上是使用var
a
调用
myFunction
)。第二个示例仍然不起作用。您正在传入经过计算的函数(未定义
a
),而不是传入函数(即没有参数列表的函数名):
myFunction
// in some accessible context/namespace
App.myCallback = function(a){
...
};

// somewhere else
$.getJSON('url', App.myCallback);