从逻辑运算符文档中的运算符 &&
语法expr1 && expr2
:
如果expr1可以转换为true,则返回expr2; 否则,返回expr1。
在javascript中,所有非空字符串都将转换为True
。
我是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
如何将布尔值与字符串进行比较?每个字符串的价值是多少?
你所描述的是什么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 = true && false;
var a3 = false && true;
console.log(a1);
console.log(a2);
console.log(a3);
使用1
和0
:
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
。