如何在JavaScript中将函数取反并分配给变量?

时间:2019-01-24 13:42:00

标签: javascript

我将使用javascript isNaN内置函数对字符串进行验证。但是根据其他变量,我想否定isNaN的值,所以我可以检查其是否为数字

例如:

我正在尝试做这样的事情,但是在javascript中,这是无效的

function validation(objectWithStrings, type){
    let stringCheck = type == 1 ? isNaN : !isNaN
    ...
}

我想这样做,所以我不需要在代码中间做很多if / else语句,我不能只调用stringCheck(someString)并且获取是true还是false

是否可以通过变量获取函数,但是在调用它时,它会返回求反函数的结果?

观察:我不想要一种更好的方法来检查字符串是否为数字,我想获得一种返回任何函数的取反值的方法。

2 个答案:

答案 0 :(得分:2)

表达式isNaN是有效的javascript函数,但!isNaN不是有效的javascript函数。您需要传递一个有效的JavaScript函数,该函数返回isNaN的反义词:

function validation(objectWithStrings, type){
    const stringCheck = type == 1 ? isNaN : (str) => !isNaN(str)
    ...
}

答案 1 :(得分:1)

考虑到观察,您可以创建一个negate函数来接受回调并取消回调执行的结果:

const isNumber = value => !isNaN(+value);
const negate = fn => (...args) => !fn(...args);

const isNotNumber = negate(isNumber);

console.log(isNumber('10'));
console.log(isNotNumber('10'));