JavaScript 代码揭秘:令人震惊的下巴运动

发表时间: 2023-08-21 18:16

【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"。

你答对了吗?在学习和工作编码过程中是否也遇到过类似的奇怪问题?欢迎在评论区留言分享。