Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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,下面是来自雄辩的Javascript章节的一段代码- 这是: var dayName = function(number) { var names = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; return names[number]; }; javascript中这两个函数的区别是什么 第一个方法返回一个方法,该方法(调用时)将返回工作

下面是来自雄辩的Javascript章节的一段代码-

这是:

var dayName = function(number) {
  var names = ["Sunday", "Monday", "Tuesday", "Wednesday",
               "Thursday", "Friday", "Saturday"];
  return names[number]; 
};
javascript中这两个函数的区别是什么

第一个方法返回一个方法,该方法(调用时)将返回工作日的名称

第二个返回工作日的
名称,同时从数组中获取索引

这两种做法中有一种是不好的做法吗

对这一点的回答可能因上下文而异。您将需要考虑这两种方法中的数组是实况(不断更新)还是静态的,或者是小的还是大的(然后每次创建它都没有什么意义),或者使用频率(如果需要调用很多次,这个数组将被创建很多次),等等。 没有一个是坏习惯。但第一个代码段是更好的方法。在第一个代码中,您创建了一种类似于模块的结构,其行为类似于一个单独的实体,并且可以重用。它的所有功能都在里面


第一种方法将名称数组保存在闭包中,第二种方法每次都创建名称数组。第一种可能更有效,因为它不会每次都创建阵列,但性能上的差异可能可以忽略不计。唯一的“错误做法”是没有将第一个函数表达式括在括号中,这从一开始就清楚地表明它是一个立即调用的函数表达式(IIFE)。我不知道为什么在这种情况下,使用模块比使用一个函数更好。如果他计划做更多的方法,那么这将是真的,但对于只有一个函数,我认为做一个模块是一种过火的行为。不是在这种特殊情况下,而是作为一个实践模块结构是一种很好的实践。具体来说,返回的函数是一个闭包。并突出显示
未捕获的语法错误:意外的标记(
)@Andy所有Js函数都是闭包。但是,如果你看一下定义,只有外部的一个是闭包。@Rayon我在测试OP的代码时没有遇到这个错误。@gurvinder372,对了,伙计!因为变量包含表达式。。。
var dayName = function(number) {
  var names = ["Sunday", "Monday", "Tuesday", "Wednesday",
               "Thursday", "Friday", "Saturday"];
  return names[number]; 
};