源码学习之noop

2023-08-23 0 332

/** * 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?

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务