`

JS 宽松相等和严格相等

阅读更多

宽松相等(loose equals)== 和严格相等(strict equals)=== 都用来判断两个值是否“相
等”,但是它们之间有一个很重要的区别,特别是在判断条件上。
常见的误区是“== 检查值是否相等,=== 检查值和类型是否相等”。听起来蛮有道理,然而
还不够准确。很多 JavaScript 的书籍和博客也是这样来解释的,但是很遗憾他们都错了。
正确的解释是:“== 允许在相等比较中进行强制类型转换,而 === 不允许。”

 

var i = 2;
Number.prototype.valueOf = function() {
 return i++;
};
var a = new Number( 42 );
if (a == 2 && a == 3) {
 console.log( "相等" );
}

 

效果图:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 4.7 KB
1
0
分享到:
评论

相关推荐

    实例分析JS中的相等性判断===、 ==和Object.is()

    在JS中,主要有三种相等性判断方式:严格相等(===)、宽松相等(==)以及`Object.is()`。 1. **严格相等(===)** 严格相等比较会检查两个值的类型和值是否都相同。如果类型不同,即使值相等也会返回`false`。...

    JS 特殊数据类型的 == 和 === 比较

    在JavaScript(JS)中,`==` 和 `===` 是两种常见的比较运算符,它们用于判断两个值是否相等。然而,这两个运算符在处理特殊数据类型时有着显著的差异,这经常会让开发者感到困惑。下面我们将深入探讨这两个运算符的...

    js代码-完全相等-js能力测评

    首先,`==`是JavaScript中的宽松相等比较操作符。当两个值用`==`进行比较时,JavaScript会尝试进行类型转换,使它们变为相同类型后再进行比较。例如,数字`0`与空字符串`""`用`==`比较时会返回`true`,因为在这种...

    JavaScript03 面向对象编程.pdf_前端学习资料

    相等性判断在JavaScript中非常重要,`==`和`===`分别代表宽松相等和严格相等。`Object.is()`方法则提供了一个更精确的相等性判断,它可以正确处理NaN和-0的情况。 在JavaScript中,命名空间是一种组织代码的方式,...

    《JavaScript 快速查询手册》.rar

    `==`和`===`分别代表宽松相等和严格相等。 3. **控制流**:包括条件语句(if...else)、循环(for、while、do...while)和switch。此外,还有三元运算符(条件表达式)提供简洁的条件判断。 4. **函数**:...

    两个等号与三个等号的区别

    =`来判断值的相等性,但它们在比较时也会进行类型转换,这被称为宽松相等。 在源码分析和工具使用中,理解这些运算符的区别至关重要。例如,在调试代码时,我们可能需要确定变量是否严格等于特定的值,而不是仅仅值...

    JavaScript初学者例子

    例如,`+`用于加法和字符串连接,`==`和`===`分别代表宽松相等和严格相等。 3. **控制结构**:包括条件语句(if...else,switch)和循环(for,while,do...while),用于根据特定条件执行代码或重复执行代码块。 ...

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

    ==运算符和===运算符用来检测两个值是否相等,它们采用了具有同一特质的两个不同定义。这两个运算符都接受任意类型的运算数,如果两个运算数相等,它们都返回true,否则都返回false,===运算符是等同运算符,它采用...

    JavaScript学习手册

    ==和===分别代表宽松相等和严格相等,前者会进行类型转换,后者则不。!!=和!==则分别表示不相等和严格不相等。 typeof运算符用于返回变量的类型,void运算符用于返回undefined,常用于阻止脚本执行后的默认行为。 ...

    Javascript学习总结

    JavaScript提供了两种相等运算符:`==`(宽松相等)和`===`(严格相等)。宽松相等会在比较前尝试类型转换,而严格相等则不会。例如: ```javascript 1 == "1"; // true 1 === "1"; // false ``` #### 12. in ...

    javascript 快速入门

    例如,`+`不仅用于加法,还能拼接字符串,`==`和`===`分别代表宽松相等和严格相等。了解这些运算符的用法对编写逻辑至关重要。 3. **控制流程**: `if...else`用于条件判断,`for`和`while`循环用于重复执行代码。...

    JavaScript权威指南-ECMAScript5.pdf

    例如,`==`和`===`分别代表宽松相等和严格相等,`+`可以用于数字相加和字符串拼接。 4. **函数**:JavaScript中的函数不仅是代码块,也是第一类对象,可以作为变量存储,作为参数传递,也可以作为返回值。函数可以...

    javascript中文经典帮助手册

    例如,"+"用于字符串连接和数值相加,"=="和"==="分别表示宽松和严格相等比较。 3. 控制流:JavaScript提供if...else、switch、for、while等流程控制结构,以及break、continue语句来改变程序执行顺序。 4. 函数:...

    javasciprt操作数字

    在JavaScript中,数字比较遵循宽松相等(==)和严格相等(===)原则。宽松相等会进行类型转换,可能导致意外的结果,而严格相等则会检查值和类型是否都相同。 ```javascript console.log(1 == "1"); // true,...

    JavaScript 10分钟速成 (js-in-ten-minutes)

    - **相等性判断**:JavaScript中的相等性判断分为两种:宽松相等(==)和严格相等(===),两者之间有显著差异。 - **装箱与非装箱**:某些情况下,原始类型会被自动转换为对象类型,这种转换可能会影响程序的行为。...

    详解js中==与===的区别

    在JavaScript编程语言中,比较操作符是经常使用到的元素之一,主要包含两种类型:宽松相等运算符(==)和严格相等运算符(===)。虽然这两个运算符都是用来比较两个值是否相等,但它们在比较的过程中有着本质上的...

    Javascript的24条实践

    前者被称为严格相等操作符,后者则为宽松相等操作符。最佳实践建议开发者优先使用`===`和`!==`。这是因为`===`比较两个值时,同时检查它们的数据类型和值是否完全一致;而`==`则会在类型不一致的情况下进行类型转换...

Global site tag (gtag.js) - Google Analytics