本期小知识讲的是最近 StackOverFlow 上很火的一个答案,讲述了 JS 的黑魔法之一。
小知识
我们先来看一下代码
初看这道题,第一反应一定是不可能打印出东西。然而代码会告诉你真的会打印出东西。
其实原因很简单,就是这三个 根本就不是同一个变量。只是使用了看上去像空格的半角符号而已。
这题用了种取巧的方式,并没有什么黑魔法,下面道题才是正菜。
这道题答案当然还是打印出了东西。究其原因就是因为 符号。
JS 中的双等号会隐式的转换类型。 是一个对象,它在和数字作比较。那么 JS 引擎会首先给这个对象调用 ,如果结果不是一个数字的话他会接下来调用 。可以看到在这个对象中我们自己实现了一个 方法并且结果返回了一个数字。所以我们可以看到条件为真。
这道题也侧面说明了一点,在真实开发中最好只使用三等号来判等。
结尾
如果你看了文章还有任何的疑惑,都可以留言提问,我都会一一解答。
前端小知识,每天学一点。
领取专属 10元无门槛券
私享最新 技术干货