说我有以下代码。
function myFunc(item) {
console.log(item);
}
function action() {
return myFunc("Hello World");
}
const myUncalledFunction = action;
myUncalledFunction(); // will console.log "Hello World"
有没有办法使此代码更简洁?我研究了.apply()
,但看起来它也会立即调用该函数。
我要这样做的原因是Chai's expect for throw,要求您传入一个未调用的函数。但是我要测试的函数需要传递参数。因此,当前我只创建了一个包装器函数,该函数返回传递了参数的函数。
我觉得必须有一种更好的方法来实现这一目标,这对于看着它的人来说更干净,更简单。
答案 0 :(得分:1)
使用.bind
将参数(和调用上下文,如果需要)绑定到一个函数,该函数在过程中生成一个新的可调用函数。在这里,您可以看到这基本上允许您一次传递参数,然后稍后使用这些参数调用所需的函数:
function myFunc(item) {
console.log(item);
}
const myUncalledFunction = myFunc.bind(undefined, 'Hello World');
myUncalledFunction();
或者您可能只使用简洁的箭头功能
function myFunc(item) {
console.log(item);
}
const myUncalledFunction = () => myFunc('Hello World');
myUncalledFunction();