console.log()语句中的布尔条件

Boolean conditions in console.log() statement

本文关键字:布尔 条件 语句 log console      更新时间:2023-09-26

我刚刚注意到你可以在console.log中放入布尔表达式,例如console.log("hey" || 2),在这种情况下hey将被打印到控制台窗口。

我不是100%确定console.log如何确定打印时,有一个条件在里面。

JavaScript中有真值假值的概念。非空字符串被认为是值,因此"hey"求值为true并被打印,因为在这种情况下||之后的部分不被求值。

一般情况下 true 都是不属于false0""nullundefinedNaN的值。

MDN定义OR表达式的求值如下:

逻辑或(||) expr1 || expr2:返回expr1,如果它可以转换为真正的;否则,返回expr2。因此,当与布尔值一起使用时,如果两个操作数为真,||返回真;如果两者都为假,则返回假的。

那么根据这个逻辑,console.log()打印语句中的第一个真值表达式。如果您要尝试console.log(null || 2),那么将打印出2

如果a值为false (false, undefined, 0, NaN和"),那么它将取右边的值。否则它将输出a本身

var a = null;
console.log(a || 10); //10 will print

var a = 20;
console.log(a || 10);//20 will print

最简单地说,当表达式中存在逻辑运算符时,它将尝试对整个表达式求值——由于"||"表示"或",当对"hey"求值时,它返回true,因此不需要进一步对表达式求值。

好吧,让我试着对Bohuslav的伟大解释补充我的两点意见…如果你想看一个好的实际例子,可以看看Eloquent Javascript这本书中的这个练习:

"FizzBuzz

编写一个程序,使用console.log打印从1到100的所有数字,有两个例外。对于能被3整除的数字,打印"Fizz"而不是数字,对于能被5整除的数字(而不是3),打印"Buzz"而不是数字。

当你让它工作时,修改你的程序来打印"FizzBuzz",对于能被3和5整除的数字(对于只能被其中一个整除的数字仍然打印"Fizz"或"Buzz")。"

解决方案:

for (var n = 1; n <= 100; n++) {
    var output = "";
    if (n % 3 == 0)
        output += "Fizz";
    if (n % 5 == 0)
        output += "Buzz";
    console.log(output || n);
}

这里变量output是一个空字符串,所以控制台日志不会打印它,因为空字符串是假的;但一旦"Fizz"或"Buzz"被添加到它的值中,它就会变成真实的,并被打印出来,而不是n

注意:console.log(n || output)不能反过来工作。由于n是第一个表达式,并且总是为真,因此每次都会打印它,而output将被忽略。