如何将Ramda的is(Function, renderer)转换为原生JavaScript
替换Ramda is(Function, renderer)的原生JavaScript方案
要把Ramda的is(Function, renderer)转换成原生JS,有两种简便且可靠的方法:
使用
typeof操作符(最简洁)typeof检测函数类型时会返回字符串'function',对普通函数、箭头函数、生成器函数等常规函数类型都能正确识别,是日常开发中最常用的方式:typeof renderer === 'function'替换到你的代码里就是:
const render = curry( (renderer, value) => typeof renderer === 'function' && renderer(value) );使用
Object.prototype.toString.call()(更精准)
如果你需要处理一些边缘场景(比如特殊的函数类型如async函数、早期环境中的DOM方法),这个方法能返回更准确的类型标识:Object.prototype.toString.call(renderer) === '[object Function]'替换后的代码:
const render = curry( (renderer, value) => Object.prototype.toString.call(renderer) === '[object Function]' && renderer(value) );
两种方法里,typeof足够应对绝大多数常规场景,写法也更简洁;如果追求极致的类型准确性,就选Object.prototype.toString.call()方案。
内容的提问来源于stack exchange,提问作者B_B
相关产品推荐
相关产品推荐

