第 38 题:下面代码中 a 在什么情况下会打印 1?
题目如下:
var a = ?; if(a == 1 && a == 2 && a == 3){ conso.log(1); }
答案解析:因为 == 会进行隐式类型转换,所以我们重写 toString 方法就可以了
var a = { i: 1, toString() { return a.i++; } } if( a == 1 && a == 2 && a == 3 ) { console.log(1); }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 第 39 题:介绍下 BFC 及其应用
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
第一反应想到的是a = console.log(1)
一开始没转过来,群里老哥提了一声才想到这个方向
精简一下代码:
要改下,不然报错。你这个挺好,可以做 ===
这个题目考察==的隐式转换吧
从 (a==1&&a==2&&a==3) 成立中看javascript的隐式类型转换
这题考察的应该是类型的隐式转换,考引用类型在比较运算符时候,隐式转换会调用本类型toString或valueOf方法.
解答: