&&javascript中字符串上的运算符

&&javascript中字符串上的运算符,javascript,string,operators,Javascript,String,Operators,我有以下的表达: if(a && b === c) {//do something} 如果我认为A、B和C是字符串,那么这个意义是什么? < P>这意味着: a是真实的 和 b完全等于c,包括类型 此处a is truthy表示它不是“未定义”或“null”或“0”或“NaN”或“FALSE”您的表达式扩展为: if (a) { if (b === c) { // do something } } 它首先检查a是否为某个真实值。然后检查b和c是否具有相同的

我有以下的表达:

if(a && b === c) {//do something}  
如果我认为A、B和C是字符串,那么这个意义是什么?

< P>这意味着:

a是真实的 和 b完全等于c,包括类型


此处a is truthy表示它不是“未定义”或“null”或“0”或“NaN”或“FALSE”

您的表达式扩展为:

if (a) {
  if (b === c) {
    // do something
  }
}
它首先检查a是否为某个真实值。然后检查b和c是否具有相同的值和类型

这等于a==true&&b==c。请注意,==是丢失比较。foo松散地等于true,但是不松散地等于true,因此这表示如果a不是空字符串,并且b具有相同的内容,并且与c是相同的类型,那么就做一些事情

示例:

将为true,因为a不是falsy,非空字符串是truthy,而b是与c相同的类型和内容

将为false,因为a是falsy,而空字符串是falsy

var a = 'foo';
var b = 'rab';
var c = 'bar';
将为false,因为b与c的内容不同


将为false,因为b与c boolean vs number的类型不同-with==这将为true,as true==1。

如果a的某个值不是null,并且b的值字符串,区分大小写等于c的值,那么您的代码

这是一个非常不完整的truthy定义。其他可能的falsey值与建议的NaN、0、Falswell字符串数据类型不对应,也不对应undefined和null。
var a = '';
var b = 'bar';
var c = 'bar';
var a = 'foo';
var b = 'rab';
var c = 'bar';
var a = 'foo';
var b = true;
var c = 1;