正如我在某处读到的,建议使用!==和===。
发布于 2008-10-23 18:46:30
“如果要检查两个操作数是否具有相同的类型和值,请使用严格相等运算符(===)。如果只关心值而类型无关紧要,请使用常规相等运算符(==)。例如,如果一个操作数是数字5,另一个操作数是字符串"5",则标准相等运算符将返回true,但由于它们不是同一类型,因此严格相等运算符将返回false。”http://www.webreference.com/js/column26/stricteq.html
发布于 2008-10-23 18:49:55
避免使用它们的基本原因是==
和!=
比严格的===
和!==
运算符更昂贵。这是因为其他主要问题,如果比较的两个值的类型不同,==
和!=
都会执行隐式toString转换。
一个简单的例子是
alert({toString:function (){return "1"} == 1)
这将产生true --因为将对两个值调用toString,然后比较字符串结果。在这种特殊情况下,这显然是荒谬的,但在更真实的情况下,这也可能是一个问题。
发布于 2008-10-23 18:50:06
嗯,我认为你收到的“建议”可能是出于好意,但并不是一个完整的评论。
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
https://stackoverflow.com/questions/230931
复制相似问题