函数和回调的代码约定

时间:2012-07-25 01:23:52

标签: javascript

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

$.getJSON('some/url.json', function(a) {
// do stuff with a here
});

来自其他语言,我通常会写上面的内容:

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

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

为什么前者通常是JS中首选的写作方式,而不是[可能更具可读性]后者?

3 个答案:

答案 0 :(得分:2)

使用第二种更明确的格式(假设您修复了评论中列出的问题)有很多充分的理由,包括:

  • 重用作为回调传递的函数
  • 为该函数提供一个明确的名称,以便于调试
  • 确保将该功能记录为系统中的重要内容
  • 将这些功能分开,因为它太长而不能轻松地宣布到位

但第一种格式,带有作为回调传递的匿名函数,简短而又甜蜜。如果您不需要重用该函数,如果它相对较短,并且如果它在您的系统中不是很重要,那么将它确切地声明在您使用它的位置非常有用。您可以避免在范围中添加另一个变量,并使其完全清楚该功能的用途。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

您的第一个示例是所谓的匿名函数或块。当它们只被调用一次时使用它们。第二个例子是当你多次使用这个函数时...如果你一遍又一遍地重复匿名块,这将是一个浪费很多的打字。