一个颇为有趣的 JavaScript 问题,除非你提前看答案,否则很难回答出来
【CSDN 编者按】这篇文章通过一个有趣的 JavaScript 问题,揭示了该 JavaScript 的复杂性和问题的巧妙之处。
原文链接:https://dev.to/arjuncodess/javascript-is-extraordinarily-weird-hear-me-out-56j5
未经允许,禁止转载!
作者 | Arjun Vijay Prakash 译者 | 明明如月
责编 | 夏萌
出品 | CSDN(ID:CSDNnews)
昨晚,我遇到了一个颇为有趣的 JavaScript 问题。我敢保证,除非你提前看答案,否则很难回答出来。
请问这段代码的输出结果是什么?
("b" + "a" + + "a" + "a").toLowerCase()
可选择的答案如下:
- baaa
- ba01100001a
- baa
- ba1a
这个问题表面看起来不难,但当我公布答案后,可能让你惊掉下巴。
所有上述选项都是错的!请问,你选对了吗?
答案将在5秒后公布。
5.
4.
3.
2.
1.
答案是 “banana”
JavaScript 真是匪夷所思
你可能诧异不已、质问我 “你疯了吗?”,怎么可能会是这个结果?请你先冷静冷静,让我为你分析分析。
解析工作原理
下面,让我们分步解释代码的运作原理:
- “b” + “a” 连接字符串,得到 “ba”。
- + + “a” 试图将字符串 “a” 转换为数字,由于 “a” 非有效数字,所以结果为 NaN(”非数字”)。
- “ba” + NaN 将字符串 “ba” 与值 NaN 连接,得到 “baNaN”。
- “baNaN” + “a” 将 “baNaN” 与 “a” 连接,得到 “baNaNa”。
- 最后,调用 .toLowerCase() 方法,将字符串 “baNaNa” 所有字符转换为小写,得到 “banana”。
所以,代码的最终输出就是 “banana”。
你答对了吗?在学习和工作编码过程中是否也遇到过类似的奇怪问题?欢迎在评论区留言分享。
阅读余下内容