我将使用javascript isNaN
内置函数对字符串进行验证。但是根据其他变量,我想否定isNaN
的值,所以我可以检查其是否为数字
例如:
我正在尝试做这样的事情,但是在javascript中,这是无效的
function validation(objectWithStrings, type){
let stringCheck = type == 1 ? isNaN : !isNaN
...
}
我想这样做,所以我不需要在代码中间做很多if
/ else
语句,我不能只调用stringCheck(someString)
并且获取是true
还是false
。
是否可以通过变量获取函数,但是在调用它时,它会返回求反函数的结果?
观察:我不想要一种更好的方法来检查字符串是否为数字,我想获得一种返回任何函数的取反值的方法。
答案 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'));