2

所以我开始学习 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 编写方式,而不是 [可能更易读] 后者?

4

3 回答 3

2

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

  • 重用作为回调传递的函数
  • 给该函数一个明确的名称,以使其更易于调试
  • 确保该功能在您的系统中被标记为重要的东西
  • 分离出这些功能,因为它太长了,无法舒适地声明

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

于 2012-07-25T02:42:12.090 回答
1

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

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

// somewhere else
$.getJSON('url', App.myCallback);
于 2012-07-25T01:29:03.727 回答
0

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

于 2012-07-25T01:29:13.337 回答