在javascript判断两个变量值是否相等

在javascript判断两个变量值是否相等,可以使用 ==(等同)操作符 或者 ===(恒等)操作符

== 操作符
“等同”操作符,简单判断2个变量值是否相等,变量类型不一致时,会做类型转换,即忽略变量的类型进行比较
例子1
var str1 = "123456" ; // 字符串
var str2 = "123456" ; // 字符串
alert(str1==str2) ; // 打印出 true,即相等
例子2
var str1 = 123456 ; // 整型
var str2 = "123456" ; // 字符串
alert(str1==str2) ; // 打印出 true,即相等
差别:
在例子1中,2个变量都是字符串类型(因为有引号),所以比较相等,打印出true;
在例子2中,变量str1是整型,但是在做==比较时,javascript 发现 2个变量类型不一致,先做了类型转换(调用str1的toString方法,把str1转成字段串),再比较2者,因此值也相等,打印出true;

2. === 操作符
“恒等”操作符,先比较2个变量类型是否一致,不一致返回false,一致时,再比较2个变量的值是否相等
例子1
var str1 = "123456" ; // 字符串
var str2 = "123456" ; // 字符串
alert(str1==str2) ; // 打印出 true,即相等
例子2

var str1 = 123456 ; // 整型
var str2 = "123456" ; // 字符串
alert(str1==str2) ; // 打印出 false,即不相等
差别:
在例子1中,2个变量都是字符串类型,且值都相等,因此打印出true;
在例子2中,变量1是整型,变量2是字符串,类型不相等,因此打印出false ;

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
isvalueequal()方法可以用于深度比较两个Javascript变量的是否相等。该方法可接收两个参数,分别为需要比较的变量a和变量b。 实现此方法的大体思路如下: 首先判断变量a和变量b的类型是否相同,若不同则直接返回false,表示两个变量不相等。 若变量类型相同,则进一步判断变量a和变量b的是否相等。此时可以先判断是否为基本类型,若是,则直接使用相等判断符号(==)进行比较。 如果不是基本类型,则需要递归地比较对象或数组中的每个属性或元素。具体操作可以使用循环遍历并分别比较每个属性或元素的。 在递归比较时,不仅需要比较属性或元素的,还需要判断其数据类型,并根据数据类型进行相应的比较处理。比如,若数组中嵌套了对象,则需要再次递归比较对象中的属性。 最终将比较结果返回,即表示变量a和变量b是否相等。 需要注意的是,在递归比较时,需要防止出现无限循环的情况。因此可以使用一个缓存(如Set)来储存已比较过的对象或数组,避免重复比较。 一段可能实现这个isvalueequal()方法的Javascript代码如下所示: function isvalueequal(a, b) { if (typeof a !== typeof b) { return false; } if (typeof a === "object" && a !== null) { if (cache.has(a)) { return true; } else { cache.add(a); } if (Array.isArray(a)) { if (a.length !== b.length) { return false; } else { for (let i = 0; i < a.length; i++) { if (!isvalueequal(a[i], b[i])) { return false; } } } } else { const aprops = Object.getOwnPropertyNames(a); const bprops = Object.getOwnPropertyNames(b); if (aprops.length !== bprops.length) { return false; } else { for (let i = 0; i < aprops.length; i++) { const key = aprops[i]; if (!isvalueequal(a[key], b[key])) { return false; } } } } } else { return a == b; } return true; } 其中,cache为一个Set类型的缓存,用于储存已经比较过的对象或数组。如果在递归过程中出现已经比较过的对象或数组,则直接返回true。否则,将当前对象或数组储存到缓存中。若比较过程中发现不相等,则直接终止比较并返回false。如果成功比较完所有属性或元素,则说明a和b相等,返回true。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值