`
javaanswer
  • 浏览: 5358 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类

javascript操作符1——“==”,“!=”,“===”, “!==”

阅读更多

      今天在写js时,判断一个节点的值(document.getElementById("id").value == 5)是否等于一个数值时,出现了alert(5 == "5");打印出true的情况。感觉比较奇怪,于是查阅了JavaScript高级程序设计,终于找到了原因:

 

      比较两个变量是否相等是编程中非常重要的一个基本操作。

      最早的ECMAScript中的相等操作和不等操作会在执行比较之前,先将对象转换成相似的类型。后来,有人提出了这种转换到底是否合理的质疑。最后,ECMAScript的解决方案就是提供两组操作符

      1. 相等和不相等 —— 先转换再比较

      2. 全等和不全等 —— 仅比较而不转换。

 

      1. 相等(==)和不相等(!=)

          这两个操作符都会先转换操作数(通常称为强制转换),然后再比较它们的相等性

          在转换不同的数据类型时,相等和不相等操作符遵循下列基本规则:

          a. 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值 —— false转换为0,而true转换为1。

          b. 如果有一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值。(今天碰的就是)  

          c. 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的原始值按照前面的规则进行比较。

alert(true == "1"); //打印出true
//先根据基本规则a,将true转换为数值1。
//然后根据基本规则b,将字符串转"1"换成数值1。

 

 

          这两个操作符在进行比较时则要遵循下列规则:

          a. null和underfined是相等的。(这个应该也比较常见)

          b. 要比较相等性之前,不能将null和undefined转换成其他任何值。

          c.  如果有一个操作数是NaN,则相等操作符返回false,而不相等操作符返回true。

               重要提示:即使两个操作数都是NaN,相等操作符也返回false;因为按照规则,NaN不等于NaN。

          d. 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true;否则返回false。 

   

//特殊情况比较结果
null == undefined   //true                    true == 1             //true
"NaN" == NaN        //false                   true  == 2            //false 
5 == NaN                //false                   undefined == 0   //false
NaN == NaN           //false                    null == 0             //false
NaN != NaN            //true                     "5" == 5              //true
false == 0               //true

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      2. 全等(===)和全不等(!==)

          除了在比较之前不转换操作数之外,全等和全不等操作符与相等和不相等操作符没有什么区别。

          

//true,因为相等操作会进行强制转换
alert("55" == 55);         

 //false,因为全等操作不进行强制转换,它们是不同数据类型
 alert("55" === 55);       

      

       JavaScript高级程序设计中的原话:

       由于相等和不相等操作符存在类型转换问题,而为了保持代码中数据类型的完整性,我们推荐使用全等和不全等操作符。

 

分享到:
评论
1 楼 tangxuan1988 2011-11-26  
顶一个,AI友~

相关推荐

    Java Script 经典教程(八)——JavaScript技术讲座

    理解这些操作符是编写有效JavaScript代码的基础。 3. **函数**: 函数是JavaScript中的可重用代码块,使用`function`关键字定义。它们可以接受参数并返回值,是模块化和组织代码的关键。ES6引入了箭头函数,提供了...

    JavaScript动态网页开发详解——JavaScript特效

    它包括变量声明、数据类型(如字符串、数字、布尔值、对象等)、操作符、流程控制(如条件语句、循环)以及函数等基本概念。 二、DOM操作 JavaScript能够通过Document Object Model (DOM)来操纵HTML元素,这是实现...

    JavaScript 权威指南第四版(三)

    4. **操作符**:JavaScript提供了多种操作符,如算术操作符(+、-、*、/、%)、比较操作符(==、===、!=、!==、<、>、<=、>=)、逻辑操作符(&&、||、!)以及赋值操作符(=、+=、-=等)。其中,等值操作符`==`和`===...

    4.JavaScript基础语法.zip

    JavaScript语法的基础部分包括变量、数据类型、操作符、流程控制和函数等。 1. 变量:在JavaScript中,我们使用`var`、`let`或`const`来声明变量。`var`是ES5及以前版本的标准,而`let`和`const`是ES6引入的,它们...

    javaScript测试题

    2. 操作符:JavaScript支持算术操作符(如+、-、*、/)、比较操作符(如==、===、!=、!==)、逻辑操作符(如&&、||、!)以及三元操作符(如条件表达式:`condition ? expr1 : expr2`)。 3. 控制流:JavaScript中的...

    javascript简介

    JavaScript的核心概念包括变量、数据类型、操作符、语句、函数、对象和类。下面将对这些知识点进行详细介绍: 1. 变量:在JavaScript中,我们可以使用`var`、`let`或`const`关键字来声明变量。`var`是老式语法,而`...

    Javascript的24条实践

    第一行代码中的`==`操作符将数字1与字符串'1'视为相等,因为在进行比较前,字符串被转换为了数字。而在第二行代码中,由于类型不同,所以结果为`false`。 #### 2. Eval函数的风险 `eval()`函数允许开发者将字符串...

    JavaScript 权威指南第四版(四)

    4. **操作符**:JavaScript支持多种操作符,包括算术操作符(+、-、*、/、%)、比较操作符(==、===、!=、!==、>、<、>=、<=)、逻辑操作符(&&、||、!)、赋值操作符(=、+=、-=等)以及三元操作符(条件表达式)。...

    边用边学JavaScript 实例解析

    JavaScript的基础包括变量、数据类型、操作符、控制流程、函数、对象和类等。 1. 变量与数据类型:在JavaScript中,变量无需预先声明,可以随时创建并赋值。数据类型分为基本类型(如字符串、数字、布尔值、null和...

    javascript运算符——位运算符全面介绍.docx

    ### JavaScript运算符——位运算符全面介绍 #### 一、引言 JavaScript作为一种广泛使用的编程语言,在前端开发、后端开发乃至数据科学等领域都有着举足轻重的地位。位运算符作为JavaScript运算符的一种,虽然不如...

    javascript教程

    2. **操作符**:JavaScript包含各种操作符,如算术操作符(+,-,*,/,%),比较操作符(==,!=,===,!==),逻辑操作符(&&,||,!)等。 3. **控制流语句**:包括条件语句(if...else,switch),循环语句(for...

    绝对经典的javascript教程

    2. **操作符**:包括算术操作符(+、-、*、/、%)、比较操作符(==、===、!=、!==、>、<、>=、<=)和逻辑操作符(&&、||、!)等,理解它们的工作原理对编写逻辑代码至关重要。 3. **控制流**:条件语句(if...else...

    JavaScript参考手册

    3. 操作符:JavaScript提供了多种操作符,如算术操作符(+、-、*、/、%等)、比较操作符(==、===、!=、!==等)、逻辑操作符(&&、||、!)以及赋值操作符(=、+=、-=等)。 4. 控制结构:包括条件语句(if...else、...

    javascript学习ppt文档

    4. **操作符**:JavaScript支持各种操作符,如算术操作符(+,-,*,/,%),比较操作符(==,===,<,>,<=,>=),逻辑操作符(&&,||,!)以及赋值操作符(=,+=,-=,*=,/=,%=)。 5. **控制流**:控制流包括...

    javascript--ppt

    3. 操作符:JavaScript支持算术操作符(如+,-,*,/,%),比较操作符(如==,!=,>,<),逻辑操作符(如&&,||,!),以及赋值操作符(如=,+=,-=等)。 4. 控制流:条件语句(如if...else,switch)用于根据...

    图解javascript结构

    1. **JavaScript操作符与字符** `Javascript-operational-character.gif`可能展示了JavaScript中的各种操作符,包括算术操作符(+,-,*,/等)、比较操作符(==,!=,>,<等)和逻辑操作符(&&,||,!)。理解这些...

    javascript 学习资料——适合WEB初学者

    1. **基础语法**:了解变量、数据类型(包括基本类型和引用类型)、操作符、流程控制(如条件语句和循环语句)以及函数的使用。理解作用域和闭包是JavaScript编程中非常关键的概念。 2. **对象与原型**:JavaScript...

    JavaScript中的typeof操作符用法实例

    对一个值使用typeof操作符可能返回下列某个字符串:“undefined”——如果这个值未定义“boolean”——如果这个值是布尔值“string”——如果这个值是字符串“number”——如果这个值是数值“object”——如果这个是...

    JavaScript快速查询手册

    JavaScript的核心概念包括变量、数据类型、操作符、语句、函数、对象和类。以下是对这些概念的详细解释: 1. 变量:在JavaScript中,变量用于存储数据。你可以用`var`, `let`或`const`关键字来声明它们。`var`是...

    day02-js基础素材.zip

    包括算术操作符(+、-、*、/、%)、比较操作符(==、===、!=、!==、>、<、>=、<=)和逻辑操作符(&&、||、!)。了解这些操作符对于编写条件语句和循环至关重要。 3. 控制流程: JavaScript 提供了 `if...else`、`...

Global site tag (gtag.js) - Google Analytics