0

嘿,任何在专业环境中使用 JavaScript 的人。我想知道使用 == 和 === 运算符比较值时的标准。我在看一个视频,解释说如果你比较一个值为 '5' 的 sting 和一个值为 5 的 int ,它使用 == 运算符返回 true 。然后他们建议对所有内容都使用 ===。我知道这是错误的,因为如果你想比较嵌套在一些具有不同类型定义的多态对象中的一些值,比如一个是学生,另一个是教师,那么 === 总是会返回 false。

经过深思熟虑后,我得出结论,最好尽可能使用 === 并在必要时使用 ==。

你能给我一些关于专业环境中的经验法则的见解吗?

4

3 回答 3

4

规则很简单:

始终使用===and!==除非您明确希望允许进行类型转换并且已经考虑过该类型转换的后果。换句话说,您应该几乎一直使用===and 。!==


您对多态对象的例外不适用,因为在比较两个对象时=====两者都要求两个对象是完全相同的对象。在这种情况下没有类型转换。如果您正在比较多态对象的两个属性,那么只查看属性的类型,而不是包含对象的类型。


类型转换的详细规则==http://es5.github.com/#x11.9.3。有一些奇怪的是这样的:

var x;              // x is undefined
alert(x == null);​   // alerts true
于 2012-08-21T20:13:55.237 回答
1

查看 http://jshint.com,它有助于实施这些最佳实践。他们(以及几乎所有其他人)推荐使用===.

我很少想到使用==over的理由===

===这是一个即使==感觉更容易使用的奇特示例。

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:好的部分和可维护的 JavaScript,也推荐了这种做法。

于 2012-08-21T20:25:29.450 回答
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
}

老实说,===在语句中使用它真的很少见

于 2012-08-21T20:15:06.720 回答