判断两个变量是否相等是程序设计中非常重要的运算,若是对原始值进行运算,则比较简单,但涉及到对象,则有点复杂.
ECMAScript提供了两套运算符处理这个问题:
等号和非等号处理原始值 全等号和非全等号处理对象1.等号和非等号
等号由==表示.当且仅当两个运算数相等时,才返回true.
非等号由!=表示.当且仅当两个运算数不相等时,它返回false.
为了确定运算数是否相等,这两个运算符都会进行类型转换.类型转换基本规则如下:
如果一个运算数是Boolean值,在检查相等性之前,会把它转换成数字值.true转换为1,false转换为0. 如果一个运算数是数字,另一个运算数是字符串,则尝试将字符串转换为数字. 如果一个运算数是数字,另一个运算数是对象,则尝试将对象转换为数字. 如果一个运算数是字符串,另一个运算数是对象,则尝试将对象转换为字符串. 不能将null和undefined转换成其他类型值.运算符在进行比较时,遵循以下规则:
值null与undefined相等 如果某个运算数是NaN,等号返回false,非等号返回true.即使两个运算数都是NaN,等号仍返回false 如果两个运算数都是对象,则比较的是它们的引用值.对一些特殊值进行比较,前提代码:
function display(value){ document.write(value+"<br/>"); } var obj1 = new Object(); var obj2 = new Object(); var obj3 = obj1;结果:
比较式结果1=="1"true1==falsefalse1==truetrue2==truefalsenull==undefinedtrue1==NaNfalseNaN==NaNfalseNaN!=NaNtrueobj1==obj2falseobj1==obj3true2.全等号和非全等号
全等号由===表示.只有在无需类型转换运算数的情况下,才返回true.
非全等号由!==表示.
例子,前提代码:
function display(value){ document.write(value+"<br/>"); } var obj1 = new Object(); var obj2 = new Object(); var obj3 = obj1;结果:
比较式结果1==="1"false1===falsefalse1===truefalse2===truefalsenull===undefinedfalse1===NaNfalseNaN===NaNfalseNaN!==NaNtrueobj1===obj2falseobj1===obj3true转载于:https://www.cnblogs.com/oneword/archive/2009/12/24/1631338.html