有没有必要弄个全局空函数

我反正是用了全局空函数。没办法,调用第三方 API 时,有些 ** API 就是必须传入一个 callback,哪怕这个 API 已经返回了一个 promise。
那我为什么不每次都传入 ()=>{} 呢?因为这样会创建新对象,我不知道 V8 低层能优化到什么程度,与其每次都 GC,不如缓存起来,而且缓存后的代码更好看。

英雄所见略同 :sunglasses:
话说你到底是产品还是技术啊,标签又成leader了

你省了一次if,却多了一次空函数调用,都是入栈,你是怎么觉得这样性能高了的 :laughing:

问号语法可不一定就是if的缩写,问号语法是根据js底层实现的,在es5可能是缩写,在高版本很可能变成其他高性能实现。

我的意思就是设计的方法,都应该自动兼容空的情况,然后该传null就传null,除非一些历史老接口太烂没办法,你看主流的库callback基本都是随便传空的。

他们反对的是全局空函数,我是否决所有空函数,除非为了兼容历史问题,不然就不应该存在。

我现在是技术了。标签是论坛自带的,只能选 leader

我也是兜了一圈还是回来写代码了,虽然累但是每天很有乐趣

1赞

你是说那个回调函数的处理?
我的思路是这样的:
即便if判断比调用空函数性能更高
但是两者不能直接这么比
因为回调函数大部分时间不是空的
性能开销小的if * 高频次 > 性能开销大的空函数 * 低频次
所以一开始给callback一个空函数作为默认值
省掉高频执行的if判断,保留低频执行的空函数更加优秀

同感,与其每次去new一个,不如保存下来

what?哪来的频次区别?
你的代码:
callback()(此处的callback是空函数)

callback?.()(此处的callback可以为null)

我想问哪来的频次区别,不是完全相等的频次吗? :thinking: