&&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;