/**
* Perform no operation.
* Stubbing args to make Flow happy without leaving useless transpiled code * with …rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
*/
function noop(a, b, c) { }
这是几段vue2里的源标识符。
noop,是No Operation或No Operation Performed的简写,意指无操作方式。
在汇编词汇中,NOOP命令一般来说用作掌控排程的目地,强制性缓存翻转,防止流水线大灾难,占有组成部分命令延后),或者做为转义符以供流程的明显改善(或代替被去除的命令)。
NOOP在各式各样词汇中的范例:
在C词汇中,王劝(;)或空块({})都是NOOP。jQuery中,“jQuery.noop()”表达式会建立两个NOOP。在Perl中,第一行(…)能用作NOOP。但假如Perl试著继续执行标识符,则会得出未同时实现的极度。在Python中,“pass”句子可用作NOOP。在Visual Basic中,王劝(;)则表示NOOP。在vue源标识符中的那个noop无操作方式空表达式,主要就促进作用是为许多表达式提供更多缺省,防止传至undefined等等的统计数据引致标识符手忙脚乱。
比如说vue中:
new Watcher(vm, updateComponent, noop, {
before: function before() {
if (vm._isMounted && !vm._isDestroyed) {
callHook(vm, beforeUpdate);
}
}
}, true /* isRenderWatcher */);
Watcher具体同时实现为:
var Watcher = function Watcher(
vm,
expOrFn,
cb,
options,
isRenderWatcher
) {
…
}
这里传至noop空表达式的促进作用,是防止在调用回调表达式cb时,流程报错引致中断(比如说传至undefined,继续执行cb的时候就会报cb is not a function错误)。
这里也能直接使用两个无操作方式的匿名表达式来代替noop。在vue2的源标识符中,共有20处使用了noop表达式,假如每次都建立两个匿名表达式,两个是降低了标识符的可读性,另两个是在js压缩时,这部分匿名表达式是无法被压缩的,降低了标识符的压缩率。
参考资料:
NOP No-operation instruction noop in Javascript What is the JavaScript convention for no operation?
