JavaScript严格类型检查失败

时间:2016-05-09 07:35:18

标签: javascript

我正在检查三个Strings的相等性;

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个变量的场景?

1 个答案:

答案 0 :(得分:1)

我的问题并不完全清楚。

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

使用

console.log(str1 === str2 === str3);

你正在检查

(str1 === str2) === str3

(是的,关联性是left to right这里)

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

你想要的是

(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));

注意:多行字符串文字很痛苦。这些字符串是不同的:

var str2 = "Hello \
    World!";
var str4 = "Hello \
World!";