JavaScript严格类型检查失败

JavaScript严格类型检查失败,javascript,Javascript,我在检查三个字符串是否相等 var str1 = "Hello World!"; var str2 = "Hello \ World!"; var str3 = "Hello" + " World!"; //console.log(str1===str2);//true // console.log(str2===str3);//true console.log(str1 === str2 === str3); //false 我们如何检查我想要比较3个变量的场景?我不太清楚你的问题

我在检查三个字符串是否相等

var str1 = "Hello World!";
var str2 = "Hello \
    World!";
var str3 = "Hello" + " World!";
//console.log(str1===str2);//true
// console.log(str2===str3);//true
console.log(str1 === str2 === str3); //false

我们如何检查我想要比较3个变量的场景?

我不太清楚你的问题

假设您的问题是关于如何比较3个字符串的相等性: 与

你在检查吗

(str1 === str2) === str3
(是的,关联性在这里)

也就是说,您正在将布尔值与字符串进行比较

你想要的是

(str1 === str2) && (str2 === str3)
假设您的问题是关于如何比较字符串,但不关心空格的数量和类型(请参见下面的注释): 那么最好是使用如下函数规范化字符串

function normalize(str){
    return str.replace(/\s+/g,' ');
}
您可以定义一个比较所有字符串的函数:

function allEquals(strs) {
   var p;
   for (var i=0; i<arguments.length; i++) {
       if (typeof arguments[i] !== "string") return false;
       var s = arguments[i].replace(/\s+/g, ' ');
       if (p !== undefined && s!==p) return false;
       p = s;
   }
   return true;
}

console.log(allEquals(str1, str2, str3));

str1===str2===str3
==str2==str2=
true
=
true==str3
=>
false
。在这个具体的例子中,当比较
str1
str2
时,
false==str3
它不会让我成为
真的。我也有同样的想法,但是字符串是不相等的。好的,但是要提到
var str2=“Hello\World!”字符串包含很少的空格(缩进),所以这和其他字符串不一样。我没有真正得到下面的投票。如果有不清楚的地方,请发表评论。@Tushar str2也是一样的。你可以在这里看到JSBIN@Tushar,因为没有缩进,所以在bin中也是一样的。您的问题中的空格来自缩进(这就是开发人员喜欢多行字符串文字的原因)
function allEquals(strs) {
   var p;
   for (var i=0; i<arguments.length; i++) {
       if (typeof arguments[i] !== "string") return false;
       var s = arguments[i].replace(/\s+/g, ' ');
       if (p !== undefined && s!==p) return false;
       p = s;
   }
   return true;
}

console.log(allEquals(str1, str2, str3));
var str2 = "Hello \
    World!";
var str4 = "Hello \
World!";