curry函数能不能中途执行?
Can curry functions be executed half way?
假设我有这样的函数:
function foo(){
return () => {
return "bar"
}
}
foo()() // => "bar"
有没有办法在不使用参数的情况下 return 函数以外的东西?
foo()() // => "bar"
foo() // => "foo"
没有。如果值 returned 以后必须可以调用,那么它必须是一个函数 - 没有例外。
不过你可以在函数上加上 属性。
function foo(){
return Object.assign(
() => {
return "bar"
},
{ prop: 'bar' }
);
}
console.log(foo()());
console.log(foo().prop);
或者return既是函数又是其他东西。
function foo(){
return [
() => {
return "bar"
},
'bar'
];
}
const [fn, val] = foo();
console.log(fn());
console.log(val);
假设我有这样的函数:
function foo(){
return () => {
return "bar"
}
}
foo()() // => "bar"
有没有办法在不使用参数的情况下 return 函数以外的东西?
foo()() // => "bar"
foo() // => "foo"
没有。如果值 returned 以后必须可以调用,那么它必须是一个函数 - 没有例外。
不过你可以在函数上加上 属性。
function foo(){
return Object.assign(
() => {
return "bar"
},
{ prop: 'bar' }
);
}
console.log(foo()());
console.log(foo().prop);
或者return既是函数又是其他东西。
function foo(){
return [
() => {
return "bar"
},
'bar'
];
}
const [fn, val] = foo();
console.log(fn());
console.log(val);