"x < y && y > x"有什么理由吗?



我正在阅读一些用于验证表单输入的Javascript代码,注意到一个if语句读取if (!(x < y && y > x)) {...}

我最初的想法是,这种重复的结构是完全多余的,应该放弃两种比较中的一种。万一我有可能错了,而且事实上还有更多,我想我会问的。

我的另一个想法是,这可能是另一种语言中所必需的一些习语的情况,这里的程序员只是出于习惯将其带到了Javascript中(尽管我会惊讶地发现,在任何环境中都需要这样的东西(。

编辑

特定代码在一个函数中,用于测试提交事件的开始和结束日期是否可行(即结束日期在开始日期之后(。实际示例读取if(!(start_time < end_time && end_time > start_time)) {...},其中start_timeend_time都是DateTime值。

编辑2

不是这个问题的重复,因为在这种情况下,问题是需要测试if语句中看似互斥的两个条件,而在这种情况中,问题是如何使if语句解决似乎需要两个互斥条件同时为真的问题。

它看起来像是一种允许falsy值的模式,这些值可以转换为数字(没有NaN,如''null(。

function f(x, y) {
return [!(x > y && y < x), x <= y, x < y || x === y].join(' ');
}
console.log(f(1, 2));                 //  true
console.log(f(2, 1));                 // false
console.log(f(1, 1));                 //  true
console.log(f('', 1));                //  true
console.log(f(1, ''));                // false
console.log(f('', ''));               //  true
console.log(f(undefined, undefined)); //  true 
console.log(f(1, undefined));         //  true  different values by using other comparisons
console.log(f(undefined, 1));         //  true /
console.log(f(null, null));           //  true
console.log(f(1, null));              // false
console.log(f(null, 1));              //  true
.as-console-wrapper { max-height: 100% !important; top: 0; }

相关内容

  • 没有找到相关文章

最新更新