function fn(a) {
return a * a;
}
fn.toString = function() {
return 0;
}
fn.valueOf = function() {
return 0;
}
console.log(fn) => 0
console.log(fn + 1) => 1
console.log(!fn) => false
最近写一个工具函数要用到类似这样的功能,函数不传参使用的话就获取 toString 或 valueOf 的值。通常情况下是能获取到值的,但是当我需要做布尔运算的时候却得不到想要的结果,不会取 toSring 的值再做布尔运算,而是直接将函数做布尔运算,函数永远是真值,取反则为 false,即 !fn => !true => false,而我希望的是:!fn => !0 => true
有什么黑科技能解决这个问题么?