JavaScript – 我不理解使用字符串和布尔值的逻辑运算符

我是Javascript的新手,我正在尝试理解逻辑运算符。我正在阅读这份文件:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_operators

例如:

var a1 =  true && true;     // t && t returns true
var a2 =  true && false;    // t && f returns false
var a3 = false && true;     // f && t returns false

我得到这个部分因为是布尔值。我相信是一样的:

var a1 =  1 && 1;    // t && t returns 1
var a2 =  1 && 0;    // t && f returns 0
var a3 =  0 && 0;    // f && t returns 0

但是当字符串出现时,我感到困惑。

var a6 = false && 'Cat';    // f && t returns false
var a7 = 'Cat' && false;    // t && f returns false
var a5 = 'Cat' && 'Dog';    // t && t returns Dog

如何将布尔值与字符串进行比较?每个字符串的价值是多少?


你所描述的是什么truthyfalsy价值观。以下是所有falsy值:

false
null
undefined
0
""
NaN

MDN 在这里说:

传递给条件语句时,所有其他值(包括所有对象)的计算结果为true。

所以上面列表中没有包含的任何内容都是true

所以,当你比较这些时:

var a6 = false && 'Cat';    
var a7 = 'Cat' && false;    
var a5 = 'Cat' && 'Dog';

它评估如下:

var a6 = false && true
var a7 = true && false
var a5 = true && true

评估为:

var a6 = false
var a7 = false
var a5 = true

演示:

使用truefalse

var a1 =  true && true;     
var a2 =  true && false;    
var a3 = false && true;     

console.log(a1);
console.log(a2);
console.log(a3);

使用10

var a1 =  1 && 1;     
var a2 =  1 && 0;    
var a3 = 0 && 0;     

console.log(a1);
console.log(a2);
console.log(a3);

使用false'Cat''Dog'

var a1 =  false && 'Cat';     
var a2 =  'Cat' && false;    
var a3 = 'Cat' && 'Dog';     

console.log(a1);
console.log(a2);
console.log(a3);

逻辑运算符文档中的运算符 &&语法expr1 && expr2

如果expr1可以转换为true,则返回expr2; 否则,返回expr1。

在javascript中,所有非空字符串都将转换为True

添加评论

友情链接:蝴蝶教程