JavaScript和=== ===有什么区别?

可能重复:
Javascript === vs ==:这与我使用的“平等”运算符有关吗?
JavaScript ==何时比===更有意义?

将字符串与未定义的值进行比较时,下面的方法有什么区别?

 var x; 
 if(x==undefined) 
 { 
  alert(x); 
 }

if(x===undefined)
{ 
  alert(x); 
}

为什么我应该在这种情况下更喜欢第二种方法..请让我知道优点..


  • ==在测试前尝试将值转换为相同的类型,如果它们相同。 "5" == 5
  • ===不这样做; 它要求对象是相同类型的。 "5" !== 5
  • 在这种情况下,结果是:

  • 如果x undefined或为nullx == undefined将为真。
  • x === undefined如果只会是真正的xundefined
  • 如果您希望将undefined和null等效处理,您应该首选第一种方法。 这个的一个常见用法是可选的函数参数。

    function greet(name, greeting) {
        if (name == undefined) name = 'World';
        if (greeting == undefined) greeting = 'Hello';
        alert(greeting + ' ' + name);
    }
    
    greet(); // alerts "Hello World"
    greet("Bob"); // alerts "Hello Bob"
    greet(null, "Goodbye"); // alerts "Goodbye World"
    

    假设我们有x = 5,

    ==等于

    x == 8是假x == 5是真的

    ===完全等于(值和类型)

    x === 5是真的x ===“5”是错误的

    希望你了解这个概念


    ===检查相同的类型。 你会理解一些例子:

    (1 == '1') //Returns true
    

    由于==不会打扰类型,所以返回true。 然而,如果你想要严格的类型检查,你应该使用===因为只有当它是相同类型并且是相同的值时它才返回true。

    (1 === '1') //Returns false
    (1 === 1) //Returns true
    
  • 两个字符串具有相同的字符序列,相同的长度和相应的相同字符时,严格相等
    位置。
  • 两个数字在数值上相等时(数字值相同)严格相等。 NaN不等于任何东西,
    包括NaN。 正和负的零相等。
  • 如果两个布尔操作数都为真或两者都为假,则两个布尔操作数严格相等。
  • 如果两个对象引用同一个对象,则两个对象严格相等。
  • 空和未定义的类型是==(但不是===)。
  • 参考

    链接地址: http://www.djcxy.com/p/3251.html

    上一篇: What is the difference between == and === in JavaScript?

    下一篇: Difference between == and === in JS