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

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

小知识

我们先来看一下代码

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

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

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

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

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

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

结尾

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

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

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

扫码关注云+社区

领取腾讯云代金券