【问题标题】:I don't understand logical operators using strings ans boolean values我不理解使用字符串和布尔值的逻辑运算符
【发布时间】:2019-01-22 18:31:35
【问题描述】:

我是 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

如何比较布尔值和字符串?每个字符串的布尔值是多少?

【问题讨论】:

标签: javascript


【解决方案1】:

您所描述的是 truthyfalsy 值。以下是所有falsy 值:

false
null
undefined
0
""
NaN

MDN 说 here 说:

所有其他值,包括所有对象,在传递给条件语句时都为真。

所以上面列表中的任何东西都是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);

【讨论】:

  • “所以,当你比较这些时:var a5 = 'Cat' && 'Dog'; 它的计算结果是:var a5 = true && true 计算结果是:var a5 = true 不,'Cat' && 'Dog'"Dog",如您上次的 sn-p 所示。 && 的结果不是强制的。同样,false && ''false,但 '' && false""
  • 对不起@AuxTaco,我对真/假没有太多经验。如果您认为合适,请随时改进我的答案。
【解决方案2】:

logical operators documentation 到语法&& 中的运算符expr1 && expr2

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

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

【讨论】:

    【解决方案3】:

    挖掘一下:

    &&:返回第一个假值,如果没有,则返回最后一个真值。

    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....
    

    以类似的方式 ||:返回第一个真值,如果没有,则操作等于最后一个假值。

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 2016-07-01
      • 2018-06-05
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多