console.log()语句中的布尔条件
Boolean conditions in console.log() statement
我刚刚注意到你可以在console.log中放入布尔表达式,例如console.log("hey" || 2)
,在这种情况下hey
将被打印到控制台窗口。
我不是100%确定console.log
如何确定打印时,有一个条件在里面。
JavaScript中有真值和假值的概念。非空字符串被认为是真值,因此"hey"
求值为true
并被打印,因为在这种情况下||
之后的部分不被求值。
一般情况下 true 都是不属于false
、0
、""
、null
、undefined
、NaN
的值。
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
将被忽略。
- javascript中的布尔条件
- 有条件地在选项标记中应用布尔属性
- 布尔条件总是计算为false
- Coffeescript:添加一个由布尔值控制的条件类名
- 布尔代数 - 使用 AND/OR 导出条件表达式是棘手的部分
- 聚合物 如何使用条件根据函数返回的布尔值显示不同的元素
- IF 条件下的布尔值导致 JavaScript 中的错误
- 如何根据 Mongo 中集合中的布尔值有条件地查询密钥
- javascript代码上的布尔条件不起作用
- 将jquery条件is(':checked')转换为布尔数组
- 在默认条件下检查布尔值
- 为什么 null 未在条件语句中转换为布尔值
- 如何在JavaScript中的IF语句中使用具有布尔值的变量作为条件
- console.log()语句中的布尔条件
- 角度一次性绑定无法等待布尔条件
- 我希望我的Ember.js条件在切换布尔值时加载不同的模板
- 计算存储为字符串的布尔条件
- Javascript - If语句-字符串&&布尔条件
- 将布尔值从 rails 控制器传递到 javascript 以用于条件
- 角度 2:根据条件切换布尔值