嘿那些在专业环境中使用JavaScript的人。我想在使用==和===运算符比较值时知道标准。我正在观看视频,解释说如果你将sting与值'5'和一个值为5的int进行比较,它会使用==运算符返回true。然后他们建议使用===作为一切。我知道这是错误的,因为如果你想比较嵌套在一些多态对象中的一些值与不同的类型defs说一个是学生而另一个是教师===总是返回false。
经过深思熟虑后,我得出的结论是,尽可能使用===,只在必要时使用==。
您能否告诉我一些关于专业环境中经验法则的见解?
答案 0 :(得分:4)
规则很简单:
始终使用===
和!==
,除非您明确要求允许类型转换并考虑该类型转换的后果。换句话说,您应该几乎一直使用===
和!==
。
多态对象的例外不适用,因为==
和===
在比较两个对象时都需要两个对象作为完全相同的对象。在这种情况下没有类型转换。如果要比较多态对象的两个属性,则只查看属性的类型,而不是包含对象的类型。
有关==
类型转化的详细规则,请参阅此http://es5.github.com/#x11.9.3。有一些奇怪的事情是这样的:
var x; // x is undefined
alert(x == null); // alerts true
答案 1 :(得分:1)
查看http://jshint.com,这有助于实施这些最佳做法。他们(以及其他所有人)建议使用===
。
我很少想到使用==
优于===
的理由。
这是使用===
的一个奇特示例,即使==
感觉更容易。
var person = {
name: "Cody",
age: "44"
}
var targetAge = 40;
// explicit type conversion, no wonder what's happening
if (parseInt(person.age, 10) === targetAge) {
alert("You won!")
} else {
alert("Sorry You Lost!");
}
另请参阅:JavaScript: The Good Parts和Maintainable JavaScript,它们也推荐这种做法。
答案 2 :(得分:0)
它常用于此类陈述中:
var x = 0;
if(x == false) {
// this will be executed
}
if(x === false) {
// this not
}
if(false == '') {
// this will be executed
}
if(false === '') {
// this not
}
另一个例子 - 在错误时返回FALSE
或在成功时返回string
的函数
function foo(bar) {
// magic
return ''; // this is SUCCESS
}
var result = foo(123);
if(result === false) {
// omg error!!
}else{
// some string returned, event empty one is OK
}
老实说,在语句中使用===
非常罕见