关于 (a ==1 && a == 2 && a == 3) == true 的问题

不久前在网上看到一个这样的提问:

有没有可能使 a == 1 && a == 2 && a == 3 的结果为 true ???

其实,大部分语言在特定情况下都是可以做到类似逻辑的。譬如 C#,C++ 等语言可以通过重载运算符来自定义的判断逻辑实现,JavaScript 等语言由于其 == 运算符的特殊性,可以直接重写其方法来实现。

以 JavaScript 语言为例

javascript 语言的 === 运算符相当于大多数其他运算符的 == 运算符,反而,其 == 运算符由于忽略变量类型,实际上, == 运算符是先调用 === 运算符判断,为 false 时,再依次调用 valueOf 方法,toString 方法进行判断。

所以,只需要简单的重写 valueOf 方法或者 toString 方法即可达到目的

var a = {i:1, 
	toString(){
		return a.i ++;
		}
}

console.log(a == 1 && a == 2 && a == 3);

运行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HolaSecurity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值