既然空的变量是null
那是不是也弄个全局的空函数
nullFunction = ()=>{}
这样项目中所有使用到空函数的地方都可以指向nullFunction了
请教下懂底层原理的小伙伴,这样做有没有必要
空函数吗,Function就可以了,也是全局的,就是名字太长了。。确实有它的用处,但不多
实测可以,牛逼,舒服~~ 
我提供另一种思路
为什么你会有空函数的需求?
我猜大概原因是为了不想写这样的代码吧
if(callback){
callback();
}
但其实可以这样
callback?.()
// 如果callback是null / undefined,将什么也不会发生,也不会报错
请放心的设计可以接受null的callback吧,不要再传空函数了
最后,好久没上论坛了,点个赞吧,不然下次又是几个月后了 
Function 是生成函数用的,不是每个平台都支持。而且 Function 需要一个参数,直接传 Function 给 callback 是会报错的。
是的,我刚才也碰到报错的情况了。
所以还是在纠结用全局空函数,还是直接用()=>{}
空函数主要几个用处:
1、函数默认值
callback: (tag: any, event: any, …parms: any[]) => void = () => { };
2、函数兜底值
funcText = this.func ?? (() => { });
2、动态屏蔽接口
myLog = ()=>{} //屏蔽Log日志
如果一个项目里很多地方都会用到()=>{},把他弄成一个全局函数,这样不需要每次生成一个新的()=>{}
但不知道底层是否本来就是同一个函数呢
callback?.()只是把if(callback){callback();}缩写了
大部分情况callback是不为空的,但是却每次都额外多执行一次if(callback)的判断
默认值空函数就为了规避这个额外的if判断
说得好像调用空函数一定不会有额外开销一样。做个性能对比测试吧
不是省调用的开销,只是不希望每次()=>{}创建一个新的
我是除了要调东西或者啥,把代码注释了才导致函数变空,其它情况下还没用到过空函数 
我觉得走一次if性能上应该是比执行一次空函数会好些吧
老老实实if吧,骚操作多了,指不定什么时候把自己坑到了 
还没想通这个全局空函数做什么用,, 
declare global {
interface Window {
Nf:Function
}
var Nf:Function
}
var _global = typeof window === "undefined" ? global : window
_global.Nf=()=>{}
你要的全局空函数
1和2感觉没有什么必要吧,第3是不是最好加开关来实现屏蔽日志?
I know,Function作为构造函数体对参数有一定的要求,我以为他只是想单纯的调一下 
可以的,现在主要是纠结,有没有必要搞这么个全局空函数
我是觉得有必要,所有啥也不干的函数,统统指向同一个全局空函数
基于你的使用和问题做下大概分析:
1、给callback参数设置默认值:这是ES6产物,低版本主流编译方式“callback === void 0 && (callback = function(){})”,可以说看出这段代码费力不讨好哦(这个不能选);
2、空函数和if的开销问题:空函数执行开销来自“调用和返回的栈操作”,if语句的执行开销主要来自“条件表达式的值”,对于这种低频调用率来说,显然这里两者开销都很微小(别捶我,大佬们都这么说的),不过从执行流程上看,会给人一种if更快的现象。
基于你的使用目的话(callback),既然给参数设置默认值是一种费力不讨好的存在,那么就没必要去给callback赋值上一个空函数,so,如果是我会写成:callback && callback();
附注:顺便抱个歉,没搞清楚你要全局函数函数干啥,Function是构造函数体,每次调用会生成一个新的函数,对参数有限制(合理的函数体)我的锅,我一般是这么用的,骚操作


export type Func = (…args) => void;
这里怎么能拿 if 跟 空函数 比性能呢
大部分情况callback不是空的,这俩执行频次不一样