JS中除`function && function()`外,更简洁的函数存在性判断调用方法?
JavaScript 仅在函数已定义时调用的简洁写法
你目前用的function && function()写法本身已经很简洁,但确实有更贴合需求的实现方式,以下几种方案可以参考:
原生可选链语法(最推荐)
ES2020及以上支持的可选链操作符?.()可以直接实现这个需求,语法极简且原生支持:// 无参数调用 myFunc?.(); // 带参数调用 myFunc?.(arg1, arg2);它会自动判断
myFunc是否为已定义的可调用对象,是则执行,否则直接跳过,不会报错。封装工具函数
如果需要在多个地方复用,或者要兼容不支持可选链的旧环境,可以封装一个通用工具函数:function callIfExists(fn, ...args) { typeof fn === 'function' && fn(...args); } // 使用示例 callIfExists(myFunc, 'hello', 123);这种方式语义清晰,也避免了重复写判断逻辑。
原型扩展(不推荐)
如果你想要类似function.callIfExists()的方法链形式,可以给Function原型添加方法,但这种方式会修改原生对象,容易和其他代码冲突,仅适合个人小型项目:Function.prototype.callIfExists = function(...args) { this(...args); }; // 使用时结合可选链避免报错 myFunc?.callIfExists('test');
总结:日常开发优先用可选链?.(),简洁无额外成本;旧环境下用func && func()或封装的工具函数即可。
内容的提问来源于stack exchange,提问作者gkeenley
相关产品推荐
相关产品推荐

