数学面试经典例题 经典面试题,让a
点关注,不迷路。
做干净纯粹的技术分享,有话评论区走起来
问题解析if (a == 1 && a == 2 && a == 3) { console.log("a == 1 && a == 2 && a == 3");}
如何让if里面的代码执行,成功在控制台打印出`a == 1 && a == 2 && a == 3"`?
看到题目的第一眼,有点懵逼。怎么可能会有如此矛盾的情况发生呢?就相当于一个人怎么可能即是小孩,又是成年人,还是老年人呢?
稍等分析一下,我们会发现一些端倪。
它没说让a同时等于1 2 3。
而且js是单线程运行的。 即使它们写在了一行,那也是从左到右执行的。所以它们从时空上面就不是同一时期的东西。
回到问题,那么如果想要让这个条件成立,就需要获取一次a的同时,让它自增1。
解决办法利用判断过程中的JS隐式转换的valueOf()方法。可能比较懵,先看下代码。
let a = { i: 1, valueOf: function() { return this.i ; }};if (a == 1 && a == 2 && a == 3) { console.log("a == 1 && a == 2 && a == 3");}
解释一下:
这里我们定义了一个名为 a 的对象,并添加了一个名为 valueOf 的方法。当尝试将对象转换为原始值时,JavaScript 引擎会首先查找该对象上是否有 valueOf 方法,并尝试使用该方法返回的值作为原始值。因此,在我们的示例中,每次尝试将 a 转换为原始值时,都会调用 valueOf 方法并将其递增,从而使得 a 在每次比较时的值递增。因此,当 a 的值依次为 1、2 和 3 时,表达式 a == 1 && a == 2 && a == 3 将返回 true,并输出字符串 "a == 1 && a == 2 && a == 3"。
JavaScript 中的隐式转换规则如下,需要记住:
1. 字符串和数字相加,将数字隐式转换为字符串。
2. 字符串、数字和布尔值进行比较,布尔值会隐式转换为数字,true 转换为 1,false 转换为 0,然后再和字符串或数字进行比较。
3. 数组和原始值进行比较,将数组隐式调用 toString() 方法,将其转换为字符串。
4. 对象和原始值进行比较,将对象隐式调用 valueOf() 方法,如果返回的是一个原始值,则使用该值进行比较,否则将隐式调用 toString() 方法将其转换为字符串。
5. 对象和对象进行比较,将对象隐式调用 valueOf() 方法,如果返回的是一个原始值,则使用该值进行比较,否则将隐式调用 toString() 方法将其转换为字符串,然后再进行比较。
6. 运算符优先级高的类型会优先进行隐式转换,例如加法运算符比较运算符的优先级高,因此会先将数字转换为字符串,然后再和另一个字符串进行拼接。
总结这是一个经典的面试题,主要是想测试对 JavaScript 类型转换和比较运算符的理解。虽然这不是一种良好的编程实践,但JS 是大家公认的一种弱语言,我们对其各种机制还是需要了解的,毕竟那句话咋说来的。。。。
可以不用,但不能不会
- 11-18父爱沉默但从来不缺席:父爱无言,从不缺席
- 05-12当你确定一个人特别喜欢你的时候:如果一个人真的很喜欢你
- 06-06甄士隐 好了歌对应的诗词:甄士隐的,好了歌解注鉴赏
- 01-05苹果x拍摄高清视频 iPhone,X4K视频拍摄效果逼近微单水平
- 03-16学会这个小技巧化妆品就不用买了:如果你的化妆品没有这些数字
- 12-02张艺谋坚如磐石周冬雨,严重删减让周冬雨陈道明等大咖成背景板
- 06-08年轻人的意式风格119平,和式风格-------
- 02-08上海地铁可以刷码进站吗?上海地铁实施进站场所码
- 01-08为什么小胖墩不能吃?如何破解,小胖墩难题
- 12-23天津市东疆海滩看日出攻略 在天津的沙滩上喂海鸥
- 01-08罗翔说你终会明白前途比爱情重要:你终会明白前途比爱情重要
- 05-10骆驼奶到底怎么样?最近流行的骆驼奶你知道有多好吗
- 01-10七龙珠秋若枫认错小蝶,魔界之龙珠秋若枫对小蝶终归是有爱
- 11-06夜读有远见的人都懂得丰富自己:夜读丨张桂梅,不惧怕人生的
- 02-17汽车前机盖部位名称图解,你知道汽车机盖前的两条线有什么用吗
- 12-10神雕侠侣2的玩法:神雕侠侣2侠肝义胆怎么玩
热门
推荐
- 1幼儿园文化墙的简单图片展示271
- 2小学读书笔记大全摘抄102
- 3抗菌药物分级管理制度范本精选350
- 4教师演讲稿在路上473
- 5黑头针正确用法359
- 6外企最喜欢用这三种员工162
- 7介绍河北九龙峡的导游词390
- 8毕业赠言毕业致词246