==
和===
运算符一直是热门讨论的话题。让我们看看这两者有何不同。
双等号(==
) 符号检查松散相等,而三等号(===
) 符号检查严格相等。不同之处在于 (==
) 松散相等将在进行比较之前尝试通过类型强制解析数据类型,而 (===
) 严格相等将在数据类型不同时返回 false。下面我来给大家一些例子以便更好地理解它们。
/*示例1*/
console.log(2== "2");//输出:true
console.log(2 === "2");//输出:false
/*示例2*/
console.log(true == "1");//输出:true
console.log(true === "1");//输出:false
/*示例3*/
console.log("I am a String" == new String("I am a String."));//Output:true
console.log("I am a String" === new String("I am a String."));//Output:false
在示例 1 中,您可以看到使用两个等号 (==
) 返回 true,因为字符串“2”在进行比较之前已转换为数字2,但使用 (===
) 三个等号可以看出类型是不同的2是数字,“2”是一个字符串,然后返回 false。
在示例 2 中,您可以看到使用两个等号 (==
) 返回 true,因为在 JavaScript 中true _ 为1,_false为0。因此在松散相等的比较之前将其转换为1。但是在 (===
) 严格相等中,它不会被转换并返回 false
这是一个有趣的例子。在 (===
) 严格相等中,我们可以看到它返回 false。它说明了String Literals 与 String Object 不同。然而,在 (==
) 松散相等中,它在比较之前将对象转换为文字,然后返回 true。
==
”或“===
”哪个更好?最好在代码中使用 (===
) 严格相等,因为它会增加代码的清晰度并防止任何误报。