Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我们应该使用哪种方法来执行和处理某些代码?为什么?_Javascript - Fatal编程技术网

Javascript 我们应该使用哪种方法来执行和处理某些代码?为什么?

Javascript 我们应该使用哪种方法来执行和处理某些代码?为什么?,javascript,Javascript,我想知道在执行某些代码的特定方法下隐藏了什么 我有三种不同的方法可以做,但我真的不知道哪一种更好,在什么样的情况下,为什么。 大多数情况下,我只是出于句法偏好选择案例2,但我越来越想知道每种方法的优缺点是什么 案例1: var response = Func(); //Handle response... 案例2: Func(response){ //Handle response... }; 案例3: Func({ case_x: function(opt){ //Hand

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

我有三种不同的方法可以做,但我真的不知道哪一种更好,在什么样的情况下,为什么。 大多数情况下,我只是出于句法偏好选择案例2,但我越来越想知道每种方法的优缺点是什么

案例1:

var response = Func();
//Handle response...
案例2:

Func(response){
  //Handle response...
};
案例3:

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

谢谢你的解释,我对此很好奇

假设Func是一个现有函数:

第1种情况是,如果函数返回一个值,并且希望存储结果,例如:

function times_ten(num){ return num*10; }
var ten = 10;
var hundred = times_ten(ten);
因此,从现在起,您可以使用变量
100

情况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_字符串)

如果传入一个具有类似函数的对象,则要求
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。

这有点宽泛;你能把它写得更具体一些,少列出所有问题吗?我认为这只是归结为编码风格,但我会让其他人解释;-)假设
Func
是一个函数,你的案例#2在语法上是无效的(或者至少做了一件非常不同的事情)谢谢你的回答,但我的问题是关于这些方法的性能,我已经知道如何使用它了。我想知道一个是否更快,如果它们都是异步的,这类事情。不拉入全局名称空间的事实是否有一些重新执行?如果我们不污染全局名称空间,我们在作用域中创建的所有内容都将在执行后被销毁,因此我们的应用程序通过这样做是“更轻”的,对吗?不,如果你这样定义作用域,您只能通过对象访问方法-也就是说,您可以执行jQuery.parseJSON(json_文本),但不能执行parseJSON(json_文本)-以下是一个令人敬畏的解释,解释了为什么污染是不好的,特别是在更大的项目中:就性能而言:由于调用函数和,但是函数之外的新变量不会被垃圾收集。假设案例3和案例2都只有一种方法,那么案例3将比案例2占用更多的内存,但案例3实际上是一个更高级的特殊案例