​==​​​ 和​​===​​运算符一直是热门讨论的话题。让我们看看这两者有何不同。

双等号(​​==​​​) 符号检查松散相等,而三等号(​​===​​​) 符号检查严格相等。不同之处在于 (​​==​​​) 松散相等将在进行比较之前尝试通过类型强制解析数据类型,而 (​​===​​) 严格相等将在数据类型不同时返回 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

在示例 1 中,您可以看到使用两个等号 (​​==​​​) 返回 true,因为字符串“2”在进行比较之前已转换为数字2,但使用 (​​===​​) 三个等号可以看出类型是不同的2是数字,“2”是一个字符串,然后返回 false。

示例 2

在示例 2 中,您可以看到使用两个等号 (​​==​​​) 返回 true,因为在 JavaScript 中true _ 为1,_false为0。因此在松散相等的比较之前将其转换为1。但是在 (​​===​​) 严格相等中,它不会被转换并返回 false

示例 3

这是一个有趣的例子。在 (​​===​​​) 严格相等中,我们可以看到它返回 false。它说明了String Literals 与 String Object 不同。然而,在 (​​==​​) 松散相等中,它在比较之前将对象转换为文字,然后返回 true。

使用“​​==​​​”或“​​===​​”哪个更好?

最好在代码中使用 (​​===​​) 严格相等,因为它会增加代码的清晰度并防止任何误报。

如果你觉得文章有用请收藏点赞和评论,有任何相关的问题随时联系我~!