Javascript 我不知道';无法理解使用字符串和布尔值的逻辑运算符

Javascript 我不知道';无法理解使用字符串和布尔值的逻辑运算符,javascript,Javascript,我是Javascript的新手,我试图理解逻辑运算符。我正在阅读这份文件: 例如: var a1 = true && true; // t && t returns true var a2 = true && false; // t && f returns false var a3 = false && true; // f && t returns false 我得到这部分

我是Javascript的新手,我试图理解逻辑运算符。我正在阅读这份文件:

例如:

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

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

您描述的是
truthy
falsy
值。以下是所有
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

示范:

使用
true
false

var a1=true&&true;
var a2=真&假;
var a3=假&真;
控制台日志(a1);
控制台日志(a2);
控制台日志(a3)来自运算符
&
,语法为
expr1&&expr2

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

在javascript中,所有非空字符串都会在挖掘一点后转换为
True

&&:返回第一个falsy值,如果没有,则返回最后一个truthy值

var a1 = true && 'Cat' // no false values so returns true
var a2 = 'cat' && false // one false is there so returns false
var a3 = 'cat' && undefined // returns false
var a4 = 'cat' && null // returns false
var a5 = 'cat' && 1 // returns true
var a6 = 'false' && 'false' // returns true

and so on....
以类似的方式 ||:返回第一个truthy值,如果没有,则操作将等于最后一个falsy值


希望这对您有所帮助。

可能是重复的,或者更一般地说。我唯一理解的是错误,任何东西都是错误的。但有兴趣了解两个字符串的and运算符。即使添加10和运算符,也会出现丢失处的字符串。对于OR运算符,将显示第一个字符串。但我不知道为什么。但是结果是对于任何定义的变量,除了false和null之外,运算符都为true。“因此,当您比较这些变量时:
var a5='Cat'和&'Dog';
它的计算结果是:
var a5=true和&&true
它的计算结果是:
var a5=true
“否,
'Cat'和&'Dog'
“Dog”
,如上一个代码片段所示。
&&
的结果不是强制的。同样地,
false&&
false
,但是
“&&false
。对不起@AuxTaco,我对truthy/falsy没有太多经验。如果您认为合适,请随时改进我的答案。