据我所知,许多javascript代码仍将IIFE用作其命名空间的一种模式,并且我相信javascript开发人员通常会习惯于某些东西,不要指望从中读取代码就可以看到所有内容。开始; 有时空括号,有时更多参数。
我读到的一部分require.js
,并看到了其define
实现中的其他参数调整:
define=function (name, deps, callback) {
var node, context;
//Allow for anonymous modules
if (typeof name!=='string') {
//Adjust args appropriately
callback=deps;
deps=name;
name=null;
}
//This module may not have dependencies
if (!isArray(deps)) {
callback=deps;
deps=null;
}
// ..
我想更好地理解为什么以这种方式定义它,并且在定义自己的API时应该遵循这种方式吗?
规格:AMD
以随机或非常可选的顺序接受参数的函数只会给您一些语法糖。这不一定是您应该追求的目标,但如果能解决的话,那就太好了。
我可以举一个参数不好的例子:
JSON.stringify(data_obj, undefined, "\t");
您必须将undefined传递为替代函数(因为我没有替代函数,它是可选的)。当然,添加类似于您所发布的代码的东西很琐碎,该代码可以检查2nd和3rd参数的类型以将其减少为:
JSON.stringify(data_obj, "\t");
在Java(不是JavaScript)中,您具有多态函数,例如:
public function get(String string, List list) {}
public function get(List list) {}
根据调用的方式get
,它将调用这些实现中的任何一个。实施这些时,您可能会看到类似以下内容的信息:
public function get(String string, List list) {
/* actual implementation */
}
public function get(List list) {
this->get("", list); // call get with default 1st argument
}
因此,实际上并没有那么多实质内容,只是语法糖。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句