首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我需要一个例子来解释为什么在JavaScript中使用比较操作数!=和==被认为是不好的做法

我需要一个例子来解释为什么在JavaScript中使用比较操作数!=和==被认为是不好的做法
EN

Stack Overflow用户
提问于 2008-10-23 18:43:08
回答 4查看 608关注 0票数 16

正如我在某处读到的,建议使用!==和===。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-23 18:46:30

“如果要检查两个操作数是否具有相同的类型和值,请使用严格相等运算符(===)。如果只关心值而类型无关紧要,请使用常规相等运算符(==)。例如,如果一个操作数是数字5,另一个操作数是字符串"5",则标准相等运算符将返回true,但由于它们不是同一类型,因此严格相等运算符将返回false。”http://www.webreference.com/js/column26/stricteq.html

票数 24
EN

Stack Overflow用户

发布于 2008-10-23 18:49:55

避免使用它们的基本原因是==!=比严格的===!==运算符更昂贵。这是因为其他主要问题,如果比较的两个值的类型不同,==!=都会执行隐式toString转换。

一个简单的例子是

alert({toString:function (){return "1"} == 1)

这将产生true --因为将对两个值调用toString,然后比较字符串结果。在这种特殊情况下,这显然是荒谬的,但在更真实的情况下,这也可能是一个问题。

票数 3
EN

Stack Overflow用户

发布于 2008-10-23 18:50:06

嗯,我认为你收到的“建议”可能是出于好意,但并不是一个完整的评论。

JavaScript是动态类型的,这意味着变量可以动态更改类型(字符串、数字、布尔值),而无需强制转换。如果您这样做,解析器将不会报错。

代码语言:javascript
复制
var int = 3;    // Is typeof Number
int = 'haha!';  // is typeof String

但是,这并不是说JavaScript完全是类型无关的。相等运算符和不等运算符(==和!=)比较评估的值,忽略类型。

严格相等和严格不等运算符(===和!==)确实关心类型。因此,在确定返回值之前,它们将比较值和类型。

点击此处阅读更多信息

http://devedge-temp.mozilla.org/library/manuals/2000/javascript/1.5/guide/expr.html#1010037

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/230931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档