Javascript 我不知道';无法理解使用字符串和布尔值的逻辑运算符
我是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 我得到这部分
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没有太多经验。如果您认为合适,请随时改进我的答案。