下面代码中 a 在什么情况下会打印 1?
问题
var a = ?; if(a == 1 && a == 2 && a == 3){ console.log(1); }
回答
这是一个经典的面试题,可以通过重写 valueOf
或者 toString
方法来实现,在这些方法中动态返回变量 a 的值,以满足条件。例如:
var a = { i: 1, toString: function() { return this.i++; } } if(a == 1 && a == 2 && a == 3){ console.log(1); }
在这个例子中, a
被定义为一个对象,有一个属性 i
初始化为 1,同时重写了 toString
方法,在每次调用时返回 i
的值,并且每次返回后将 i
自增。这样在比较 a
是否等于 1、2、3 的时候,会依次调用 a.toString()
方法,得到的结果就是满足条件的 1,依次打印出来。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论