Javascript 它是用来做什么的?一次下划线?
我只看了一下Underline.js中源代码的once API,然后想知道它的用途是什么 在方法中,它似乎什么也不做:Javascript 它是用来做什么的?一次下划线?,javascript,underscore.js,Javascript,Underscore.js,我只看了一下Underline.js中源代码的once API,然后想知道它的用途是什么 在方法中,它似乎什么也不做: func = null 资料来源: _.once = function(func) { var ran = false, memo; return function() { if (ran) return memo; ran = true; memo = func.apply(this, arguments);
func = null
资料来源:
_.once = function(func) {
var ran = false, memo;
return function() {
if (ran) return memo;
ran = true;
memo = func.apply(this, arguments);
func = null;
return memo;
};
};
不清楚您是询问整个函数还是仅询问
func=null
行。如果是后者,请参见下面的步骤3
ran
最初为false
第一次运行返回的函数时:
ran
设置为true
的函数
备忘录
返回ran
现在是true
):
备忘录
返回从官方网站: 一次一次(功能) 创建只能调用一次的函数版本。重复调用修改后的函数将无效,返回原始调用的值。用于初始化函数,而不必设置布尔标志,然后再进行检查
var initialize = _.once(createApplication);
initialize();
initialize();
// Application is only created once.
该函数的功能可以在以下目录中找到: 创建只能调用一次的函数版本。重复调用修改后的函数将无效,返回原始调用的值。用于初始化函数,而不必设置布尔标志,然后再进行检查
var initialize = _.once(createApplication);
initialize();
initialize();
// Application is only created once.
下面解释了为什么设置func=null
:
假设我们永远不会在u.once()上再次运行包装函数,我们可以
为func
变量赋值null,使函数(及其所有继承的
如果需要,GC可以收集范围)
同样值得指出的是,
memo
将保存最初执行的函数的结果
因此,当您再次调用函数时,它将不会执行,但会返回第一次调用的结果。您想知道该方法,或者为什么要执行
func=null
?是的,我似乎没有解释清楚,我想知道func=null
是用来做什么的。删除对它的引用可以对它进行垃圾收集,这样它就不会占用内存。