gpt4 book ai didi

javascript - 除非 vs if 在 Javascript 中使用感叹号?

转载 作者:可可西里 更新时间:2023-11-01 02:24:54 26 4
gpt4 key购买 nike

下面的代码尝试打印出可被 2 整除的数字“是偶数”。

不应该是 if (test) then() 而不是:if (!test) then(),当测试的条件是“n % 2”时。下面的代码似乎是“IF numbers are NOT divisible by 2, print out 'number is even'”,这似乎不符合逻辑。

更一般地说,在指定条件时,编写 Unless 函数比使用 If 语句有什么优势,而我们可以简单地编写 if (!condition)?

非常感谢任何帮助。

function unless(test, then) {
if (!test) then();
}
function repeat(times, body) {
for (var i = 0; i < times; i++) body(i);
}

repeat(5, function(n) {
unless(n % 2, function() {
console.log(n, "is even");
});
// → 0 is even
// → 2 is even
// → 4 is even

最佳答案

这个有争议的优点是代码读起来更像英语:“除非 n modulo 2 不为零,向控制台记录 n 是偶数。”

根据我的经验,这样做的实际后果是大多数程序员在感到满意之前必须仔细检查 unless() 实际做了什么。因为它不是标准的 Javascript 片段,所以他们无法知道它是否使用 !或 ==true 或 ===0 或其他一些略有不同的测试,除非他们去查看实现。

关于这一原则,我最喜欢的例子是 COBOL。该语言非常努力地模仿英语,因此即使是非程序员也可以使用它……但实际上,程序员和非程序员似乎都讨厌使用它。

关于javascript - 除非 vs if 在 Javascript 中使用感叹号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28120525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com