`
dreamoftch
  • 浏览: 496614 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

javascript 相等和等同运算符的规则

阅读更多
http://www.iteye.com/wiki/javascript-core



相等运算符

如果操作数具有相同的类型,则判断其等同性,如果两个操作数的值相等,则返回true(相等),否则返回false(不相等).

如果操作数的类型不同,则按照这样的情况来判断:

◆  null和undefined相等

◆ 其中一个是数字,另一个是字符串,则将字符串转换为数字,在做比较

◆  其中一个是true,先转换成1(false则转换为0)在做比较

◆ 如果一个值是对象,另一个是数字/字符串,则将对象转换为原始值(通过toString()或者valueOf()方法)

◆ 其他情况,则直接返回false

等同运算符

如果操作数的类型不同,则不进行值的判断,直接返回false

如果操作数的类型相同,分下列情况来判断:

◆ 都是数字的情况,如果值相同,则两者等同(有一个例外,就是NaN,NaN与其本身也不相等),否则不等同

◆ 都是字符串的情况,与其他程序设计语言一样,如果串的值不等,则不等同,否则等同

◆ 都是布尔值,且值均为true/false,则等同,否则不等同

◆ 如果两个操作数引用同一个对象(数组,函数),则两者完全等同,否则不等同

◆ 如果两个操作数均为null/undefined,则等同,否则不等同

比如:

    <strong>var obj = { 
        id : "self", 
        name : "object"
    }; 
      
    var oa = obj; 
    var ob = obj; 
      
    print(oa == ob); 
    print(oa === ob);</strong>

会返回:

true

true

再来看一个对象的例子:

    <strong>var obj1 = { 
        id : "self", 
        name : "object", 
        toString : function(){ 
           return "object 1"; 
        } 
    } 
      
    var obj2 = "object 1"; 
      
    print(obj1 == obj2); 
    print(obj1 === obj2);</strong>

返回值为:

true

false

obj1是一个对象,而obj2是一个结构与之完全不同的字符串,而如果用相等操作符来判断,则两者是完全相同的,因为obj1重载了顶层对象的toString()方法。

而!=不等和!==不等同,则与==/!==相反。因此,在JavaScript中,使用相等/等同,不等/不等同的时候,一定要注意类型的转换,这里推荐使用等同/不等同来进行判断,这样可以避免一些难以调试的bug。


另外:javascript学习:http://www.iteye.com/wiki/javascript-core
分享到:
评论

相关推荐

    javascript相等运算符与等同运算符

    在JavaScript编程语言中,相等运算符(`==`)与等同运算符(`===`)是两个非常重要的概念,它们用于判断两个值是否相等,但它们的比较方式和逻辑有所不同,这一点对于理解JavaScript的数据类型转换和比较规则至关...

    javascript相等运算符与等同运算符详细介绍

    在JavaScript中,相等运算符(==)和等同运算符(===)是两种用于比较变量之间是否相等的关键字,它们在判断条件时有着不同的规则和行为。 **相等运算符(==)** 相等运算符(==)在进行比较时会尝试进行类型转换,...

    (第4讲)第5章JAVASCRIPT表达式和运算符[借鉴].pdf

    3. **相等和等同运算符**: - `==`:相等运算符,比较宽松,会尝试进行类型转换后再比较。 - `===`:等同运算符,严格比较,要求两边类型和值都相同。例如,`"abc"=="abc"`和`"abc"==="abc"`都返回`true`,但`1==...

    javascript基本语法_.docx

    在 JavaScript 中,等同运算符(==)和全同运算符(===)都是用来比较两个值是否相等的,但是它们之间有着很大的区别。等同运算符会将两个值转换为相同的类型,然后进行比较,而全同运算符则不会进行类型转换,如果...

    JavaScript中的运算符种类及其规则介绍

    JavaScript是一种广泛用于网页和网络应用的编程语言,其运算符是构成代码的重要组成部分,用于执行各种操作,如数据计算、比较、逻辑判断等。本文将详细介绍JavaScript中的运算符种类及运算规则。 首先,我们来看看...

    JavaScript运算符小结

    本文总结了JavaScript中常见的几种运算符类型,包括算数运算符、比较运算符和逻辑运算符,它们在编程实践中具有重要的作用。 算术运算符是最基本的运算符类型,包括加法(+), 减法(-), 乘法(*), 除法(/), 以及求余数...

    javascript每日必学之运算符

    在JavaScript中,运算符可以分为多种类型,包括算术运算符、赋值运算符、比较运算符和逻辑运算符。 算术运算符是用于进行基本数学运算的符号。在JavaScript中,加号"+"具有双重功能。它既可以用来计算两个数字的和...

    JavaScript核心及实践

    - **相等与等同运算符**: 分别用于比较两个值是否相等(egal)或是否为同一个对象(same)。 #### 对象与JSON - **3.1 JavaScript对象** - **对象的属性**: 对象是由属性和值组成的集合。 - **属性与变量**: ...

    南京华信智原javascript中“==”和“===”区别完美版资料.ppt

    在JavaScript中,“==”和“===”是用来比较变量之间相等性的运算符,它们之间的主要区别在于类型转换和比较的严格性。 “==”(等同)运算符在比较时,如果两边的值类型不同,会尝试进行类型转换后再进行比较。...

    关于JS中的全等和不全等、等于和不等于问题.docx

    JavaScript中的比较运算符是编程中不可或缺的部分,它们用于判断变量或表达式之间的关系。本篇文章主要探讨了JavaScript中的全等(===)和不全等(!==)、相等(==)和不相等(!=)四种比较运算符的区别及其在不同...

    JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符

    总结来说,在JavaScript中,理解假值和避免使用相等运算符(==)是非常重要的,因为这可以帮助开发者写出更为清晰、可预测和健壮的代码。全等运算符(===)的使用可以避免类型转换带来的潜在问题,而使用`isNaN()`...

    Javascript入门学习第三篇 js运算第1/2页

    相等运算符`==`会进行类型转换后比较两个值是否相等,而等同运算符`===`则不会进行类型转换,它要求值和类型都必须完全相同。值得注意的是,值`NaN`(Not a Number)永远不会与任何值相等,包括其自身。因此,`NaN =...

    JavaScript程序设计-JavaScript中的Number对象.pdf

    - `Number.valueOf()` 返回Number对象的基本数字值,等同于不使用new运算符调用Number()的结果。 5. **示例**: - `toFixed()` 方法如示例所示,将数字四舍五入到指定的小数位数,例如 `num.toFixed(2)` 把数字四...

    JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别

    首先,"=="被称为等同运算符,它在比较时会进行类型转换。这意味着如果两边的值类型不同,JavaScript会尝试将它们转换为相同的类型后再进行比较。例如: ```javascript "1" == true // 返回 true,因为true会被转换...

    JavaScript数据类型和变量_动力节点Java学院整理

    在JavaScript中,相等运算符分为两种:==和===。==比较时会尝试将两边的值转换成相同类型再进行比较,可能导致意外的结果,因此推荐使用严格相等运算符===,它不进行类型转换,只有当类型和值都相同时才返回true。 ...

    常用javascript小技巧

    JavaScript提供了多种比较操作符,如`==`(相等)、`!=`(不等)、`&gt;`(大于)、`&gt;=`(大于等于)、`(小于)、`(小于等于),用于进行条件判断。 #### 12. 变量声明 使用`var`关键字声明变量,这是JavaScript中...

Global site tag (gtag.js) - Google Analytics