首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

条件 aᅠ=1&a=2&ᅠa=3 为什么会为真?

本期小知识讲的是最近 StackOverFlow 上很火的一个答案,讲述了 JS 的黑魔法之一。

小知识

我们先来看一下代码

初看这道题,第一反应一定是不可能打印出东西。然而代码会告诉你真的会打印出东西。

其实原因很简单,就是这三个 根本就不是同一个变量。只是使用了看上去像空格的半角符号而已。

这题用了种取巧的方式,并没有什么黑魔法,下面道题才是正菜。

这道题答案当然还是打印出了东西。究其原因就是因为 符号。

JS 中的双等号会隐式的转换类型。 是一个对象,它在和数字作比较。那么 JS 引擎会首先给这个对象调用 ,如果结果不是一个数字的话他会接下来调用 。可以看到在这个对象中我们自己实现了一个 方法并且结果返回了一个数字。所以我们可以看到条件为真。

这道题也侧面说明了一点,在真实开发中最好只使用三等号来判等。

结尾

如果你看了文章还有任何的疑惑,都可以留言提问,我都会一一解答。

前端小知识,每天学一点。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180121G0JSYA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券