0

我想知道在执行某些代码的某些特定方法下隐藏了什么。

我有3种不同的方法可以做,但我真的不知道哪种情况更好,为什么。我Case 2大部分时间只是出于语法偏好而选择该方法,但我越来越想知道每种方法的优缺点是什么。

情况1:

var response = Func();
//Handle response...

案例二:

Func(response){
  //Handle response...
};

案例3:

Func({
  case_x: function(opt){
    //Handle an example case...
  }
});

感谢您的解释,我对此非常好奇!

4

1 回答 1

0

假设 Func 是一个现有函数:

情况 1 是如果您的函数返回一个值并且您想要存储结果,例如:

function times_ten(num){ return num*10; }
var ten = 10;
var hundred = times_ten(ten);

所以现在你可以从现在开始使用这个变量hundred了。

情况 2 是如果您没有返回值,或者您不需要保存它:

function write_times_ten(num){ num = num*10; document.write(num);  }
var ten = 10;
var hundred = write_times_ten(ten);

案例 3 稍微复杂一些。

如果你这样做var something={a:function(){}}- 通过创建这样的对象,你的所有函数都在同一个范围内,所以你不会污染全局命名空间。这有点像用其他语言创建一个类。jQuery 是我能想到的最大的例子,因为它所做的所有事情都是由对象处理的jQuery(或调用诸如jQuery.parseJSON(json_string)

如果你传入一个具有类似函数的对象,那么你就是要求Func()对传入的函数做一些事情,如下所示:

function do_something_times_ten(options){
    options.num = options.num*10;
    options.do_something(num);
}
var ten = 10;
do_something_times_ten({num:ten, 
                        do_something:function(num){
                                                     num = num*10;
                                                     document.write(num);  
                                                  }
                        }
);

现在会写出 1000,而不是 100。

于 2013-01-10T23:09:34.977 回答