引至:http://www.w3cschool.cn/pro_js_operators_equality.html
判断两个变量是否相等是程序设计中非常重要的运算。在处理原始值时,这种运算相当简单,但涉及对象,任务就稍有点复杂。
ECMAScript 提供了两套等性运算符:等号和非等号用于处理原始值,全等号和非全等号用于处理对象。
等号和非等号
在 ECMAScript 中,等号由双等号(==)表示,当且仅当两个运算数相等时,它返回 true。非等号由感叹号加等号(!=)表示,当且仅当两个运算数不相等时,它返回 true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。
执行类型转换的规则如下:
- 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
- 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
- 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
- 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
在比较时,该运算符还遵守下列规则:
- 值 null 和 undefined 相等。
- 在检查相等性时,不能把 null 和 undefined 转换成其他值。
- 如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
- 如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。
重要提示:
即使两个数都是 NaN,等号仍然返回 false,因为根据规则,NaN 不等于 NaN。
下表列出了一些特殊情况,以及它们的结果:
全等号和非全等号
等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。
全等号由三个等号表示(===),只有在无需类型转换运算数就相等的情况下,才返回 true。
例如:
var sNum = "66";
var iNum = 66;
alert(sNum == iNum); //输出 "true"
alert(sNum === iNum); //输出 "false"
在这段代码中,第一个 alert 使用等号来比较字符串 "66" 和数字 66,输出 "true"。如前所述,这是因为字符串 "66"
将被转换成数字 66,,然后才与另一个数字 66 进行比较。第二个 alert
使用全等号在没有类型转换的情况下比较字符串和数字,当然,字符串不等于数字,所以输出 "false"。
非全等号由感叹号加两个等号(!==)表示,只有在无需类型转换运算数不相等的情况下,才返回 true。
例如:
var sNum = "66";
var iNum = 66;
alert(sNum != iNum); //输出 "false"
alert(sNum !== iNum); //输出 "true"
这里,第一个 alert 使用非等号,把字符串 "66" 转换成数字 66,使得它与第二个运算数 66 相等。因此,计算结果为
"false",因为两个运算数是相等的。第二个 alert 使用的非全等号。该运算是在问:"sNum" 与 "iNum"
不同吗?这个问题的答案是:是的(true),因为 sNum 是字符串,而 iNum 是数字,它们当然不同。
== equality 等同,=== identity 恒等;“==”只要求值相等,“===”要求值和类型都相等
。
==: 两边值类型不同的时候,要先进行类型转换,再比较。
===:不做类型转换,类型不同的一定不等。
- 大小: 2.8 KB
分享到:
相关推荐
#### 等性运算符 在ECMAScript中,等号`==`和非等号`!=`用于比较两个值是否相等或不相等。为了确定两个运算数是否相等,这些运算符会进行类型转换。 **类型转换规则** - 如果一个运算数是布尔值,则在检查相等性...
=、>、<等)和逻辑运算符(&&、||、!)。在使用运算符时,需要注意类型转换和运算顺序。例如,相等运算符`==`会进行类型转换,而全等运算符`===`则不会。表达式可以包含多种运算符,根据运算符优先级和结合方向计算...
==)、逻辑运算符(&&、||、!)以及赋值运算符(=、+=、-=等)。 4. 控制结构:条件语句(if...else)用于根据条件执行不同的代码块,而循环(for、while、do...while)则用于重复执行一段代码,直到满足特定条件...
- **大小写敏感性**:ECMAscript中的标识符、函数名等都区分大小写。 - **注释**:支持单行注释(`//`)和多行注释(`/* ... */`),用于添加说明或临时禁用代码片段。 - **语句和代码块**:语句以分号结尾,代码块...
- **等性运算符**:==、!=、===、!==等用于比较两个值是否相等或类型相同的运算符。 - **条件运算符**:三元运算符(?:),用于根据条件选择不同的值。 - **赋值运算符**:=、+=、-=等用于赋值的运算符。 - **逗号...
=等)和逻辑运算符(&&、||、!)。条件运算符,即三目运算符(条件?表达式1:表达式2),是简洁的条件判断方式,根据条件的真假返回不同的表达式结果。 赋值运算符=用于给变量赋予值,同时还有复合赋值运算符如+=、-=等...
==、>、<、>=、<=)、逻辑运算符(&&、||、!)以及赋值运算符(=、+=、-=、*=、/=)等。 4. 语句:常见的语句包括条件语句(if...else、switch)、循环语句(for、while、do...while)、跳转语句(break、continue...
=、!==),逻辑运算符(&&、||、!),以及位运算符、赋值运算符等。 JavaScript提供了丰富的内置对象和方法,例如Date对象用于处理日期和时间,Array对象的方法如push、pop、slice、splice等用于操作数组,String...
==、>、<、>=、<=)、逻辑运算符(&&、||、!)以及赋值运算符(=、+=、-=等)。 3. **控制结构**:JS 的控制结构包括条件语句(if...else、switch)、循环语句(for、while、do...while)以及跳转语句(break、...
作为轻量级的解释型语言,它基于ECMAScript规范,被设计用来增强网页的交互性,使用户能够与网页进行动态交互。 在JavaScript基础语法中,以下几个关键概念是学习者必须掌握的: 1. **变量(Variables)**:在...
ES6(ECMAScript 2015)及后续版本引入了许多新特性,如箭头函数、模板字符串、let和const、解构赋值、类和模块等,极大地提升了JavaScript的现代性和可读性。学习这些新特性,可以让你的代码更加简洁且易于维护。 ...
JavaScript基于ECMAScript规范,其语法受到C和Java的影响,但更注重简洁和易读性。它主要有三个组成部分:ECMAScript(语法和类型系统),DOM(文档对象模型)用于操作HTML或XML文档,以及BOM(浏览器对象模型)用于...
ES6(ECMAScript 6)引入了许多新特性,如箭头函数、模板字符串、类、解构赋值、模块系统等,提高了代码的可读性和简洁性。 12. 错误处理: 通过`try...catch`结构捕获和处理运行时错误,确保程序的健壮性。 13....
ECMAScript,通常简称为ES,是JavaScript语言的标准化规范,由欧洲计算机制造商协会(ECMA International)制定并发布。这个规范定义了编程语言的语法、类型、对象、函数等特性,是现代Web开发中不可或缺的一部分。...
ECMAScript是由Ecma国际标准化组织制定的一个标准,它对JavaScript进行规范化,确保在不同平台和环境中的一致性。自1997年发布第一版以来,ECMAScript已经成为全球最广泛使用的编程语言之一,尤其在Web开发中扮演着...
=,<,>,<=,>=)、逻辑运算符(&&,||,!)以及赋值运算符(=,+=,-=,*=,/=,%=)等。 - **控制结构**:包括条件语句(if-else,switch)和循环语句(for,while,do-while),用于根据条件执行不同的代码块或...
==等)、逻辑运算符(&&、||、!)等。表达式是进行计算或返回值的语句。 4. **控制流**:包括条件语句(if...else、switch)、循环(for、while、do...while)以及break和continue语句,它们决定了程序的执行顺序。...
==、>、<、>=、<=)和逻辑运算符(&&、||、!)。理解这些运算符的用法能帮助我们进行条件判断和数据处理。 3. 控制结构:条件语句(if...else、switch)用于根据不同的条件执行不同的代码块,而循环(for、while、...
ECMAScript 是一种脚本语言标准,由 Ecma 国际组织(European Computer Manufacturers Association)制定,旨在为创建具有可移植性、平台独立性的脚本语言提供一个通用的标准。 ECMAScript 解读是学习 JavaScript ...