`
Luob.
  • 浏览: 1589963 次
  • 来自: 上海
社区版块
存档分类
最新评论

js === 和 == 的区别

阅读更多

 如果是基本类型
var a=5;
var b=5;
a===b 的结果是true 
a==b  的结果是true  

var a=”qq”;
var b=”qq”;
a===b 和 a==b 的结果相同

true  === true  和 true ==true 的结果相同
false === false 和 false == false 的结果相同


下面是对象类型的比较
var xiaoming = {name:'xiaoming', age:15};
var xiaoming2 = {name:'xiaoming', age:15};
xiaoming == xiaoming2 的结果是false ,值是一样的,为什么比较的时候是false呢? 因为xiaoming存的是一个对象的地址,xiaoming2存的也是对象的地址,它们两个地址空间一定不同,这是比较地址空间,所以为false
xiaoming === xiaoming2  结果是false   ===本来就是比较地址 

var xiaoming = {name:'xiaoming', age:15};
var xiaoming2 =xiaoming;
xiaoming == xiaoming2  为true; 两个变量引有一个地址
xiaoming === xiaoming2 为true; 两个变量引有一个地址

总结:基本类型都是值的比较所以没有区别,引有类型都是地址的比较所以没有区别。

 
现在我们看下它们的不同
 如果是基本类型
“5” === 5   结果是false  为什么呢?因为类型不同,说明不是一个地址
“5”==5  结果是 true  为什么呢? 因为 “5”在比较前会ValueOf()为Number型,他们两个值是相等的,所以为true

null === undefined 结果为false 为什么呢? 因为类型不同,说明不是一个地址
nul == undefined 结果为true  为什么呢?他们两个值是相等的

“1” === true 结果是false, 一定是false没有疑问
“1” == true 结果为true 为什么呢?"1"为ValueOf()为1,true的值也为转化为1 ,所以值相等

var xiaoming = {name:'xiaoming', age:15};
var age = 15;
xiaoming.age == age; 结果是true 值比较
xiaoming.age === age;结果为true 地址比较 //我们以前对象的属性和变量是没有区别的,这里其实还是基本类型比较基本类型

总结:值比较用尽量用==     地址比较用尽量用=== 
 
题外话: NaN == NaN 为false NaN === NaN为false ,为什么有这种情况呢? NaN的意思是not a Number 不是一个数,所以不能比较
 如果要判断一个变量是不是一个数用isNaN()函数
var a= 5;
isNaN(a); //这里应该是false,因为a是一个数,不是数的时候才是true

分享到:
评论

相关推荐

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

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

    JavaScript中三个等号和两个等号的区别(== 和 ===)浅析

    总结来说,“==”和“===”在JavaScript中都是用来比较两个值是否相等的运算符,但它们的行为和应用场景不同。理解它们的区别可以帮助开发者写出更精确、更安全的代码。在实际开发中,应该根据需要选择合适的比较...

    前端面试题之baseJS-==和===的区别.zip

    理解“==”和“===”的区别对于编写健壮的JavaScript代码至关重要。在比较时,若不希望进行类型转换,应优先使用“===”。但在某些特定场景下,如比较非预期类型的变量或处理可能为null或undefined的情况时,“==”...

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

    2. 对于复合数据类型,比如对象(Object)和数组(Array),==和===的比较结果是相同的。因为复合类型的数据比较是基于引用的,即使两个数组或对象中的内容完全相同,但它们在内存中的引用地址不同,使用==或===比较...

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

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

    javaScript中"=="和"==="的区别详解

    对于JavaScript中比较运算符,可能大家用的比较多的是“==”、对于“===”很多人可能很陌生。=== 表示恒等,首先比较两边的变量数据类型是否相等,其次比较两边的变量的数值是否相等;== 表示相等即仅仅比较两边变量...

    javascript中的相等操作符(==与===区别).docx

    ### JavaScript中的相等操作符(`==`与`===`的区别) #### 一、引言 在JavaScript编程中,比较两个变量是否相等是非常常见的需求。ECMAScript提供了两种主要的相等操作符:“==”(相等)和“===”(全等),它们...

    浅谈JS中的!=、== 、!==、===的用法和区别

    JavaScript中的比较运算符是编程中不可或缺的部分,它们用于判断变量或...理解这些运算符的区别对于编写准确无误的JavaScript代码至关重要。在进行条件判断时,推荐使用`===`和`!==`以避免类型转换带来的潜在问题。

    JavaScript里 ==与===区别详解

    JavaScript中的数据类型分为基本数据类型和对象数据类型。基本数据类型包括:Number、String、Boolean、Undefined、Null以及ES6新增的Symbol和BigInt等。对象数据类型包括:Object、Array、Function、Date、RegExp等...

    ==和===的区别

    在JavaScript中,`==`和`===`是两种常见的比较运算符,它们在进行值比较时有着明显的区别。首先,我们需要理解这两个运算符的基本概念: `==`(等于)运算符用于判断两个值是否相等,它会进行类型转换。在进行比较...

    简略说明Javascript中的= =(等于)与= = =(全等于)区别

    理解这些运算符的区别对于编写精确的JavaScript代码至关重要。 首先,`=` 是赋值运算符,它将右侧的值赋给左侧的变量,而不是进行比较。例如,`x = 5` 将数字5赋值给变量x。 接下来,`==`(等于)是宽松相等运算符...

    javaScript中”==”和”===”的区别详解

    区别: ==, 两边值类型不同的时候,要先进行类型转换,再比较。 ==,不做类型转换,类型不同的一定不等。 下面分别说明: 先说 “===”,这个比较简单。下面的规则用来判断两个值是否===相等: 1、如果类型不同,...

    javascript中的相等操作符(==与===区别)

    我们在编程的过程中,经常会遇到判断两个变量是否相等的情况,ECMAscript提供了两种相等操作符”==”和”===”来判断,这两种操作都会返回一个boolean值。一般来说,我们把”==”称之为相等,称”===”为全等。当两...

    浅析Javascript中“==”与“===”的区别

    一、对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等 2)同类型比较,直接进行“值”比较,两者结果一样 ...

    JavaScript的hash和加密模块crypto-js的所有版本,从2.5到3.1

    JavaScript的`crypto-js`库是开发者们在前端进行加密和哈希操作的常用工具,它提供了多种加密算法和哈希函数。从2.5到3.1,`crypto-js`经历了多个版本的更新,不断优化性能,增加新功能,以满足不同场景下的安全需求...

    JS中type="button"和type="submit"的区别

    在JavaScript和HTML交互中,创建按钮常常涉及到`type="button"`和`type="submit"`两种类型,它们在功能上有着显著的区别。理解这些差异对于优化表单操作和用户体验至关重要。 首先,`type="button"`的按钮是纯功能...

Global site tag (gtag.js) - Google Analytics