1

一段惊呆下巴的 JavaScript 代码

 1 year ago
source link: https://blog.csdn.net/csdnnews/article/details/132419304
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
3388e61d78aedfc11f90f28ed065d18b.gif

【CSDN 编者按】这篇文章通过一个有趣的 JavaScript 问题,揭示了该 JavaScript 的复杂性和问题的巧妙之处。

原文链接:https://dev.to/arjuncodess/javascript-is-extraordinarily-weird-hear-me-out-56j5

未经允许,禁止转载!

作者 | Arjun Vijay Prakash       译者 | 明明如月

责编 | 夏萌

出品 | CSDN(ID:CSDNnews)

昨晚,我遇到了一个颇为有趣的 JavaScript 问题。我敢保证,除非你提前看答案,否则很难回答出来。

df4c089110a316fb9593de18aaea039e.png

请问这段代码的输出结果是什么?

("b" + "a" + + "a" + "a").toLowerCase()

可选择的答案如下:

  • ba01100001a

这个问题表面看起来不难,但当我公布答案后,可能让你惊掉下巴。

所有上述选项都是错的!请问,你选对了吗?

e13a35c183fa580f6d581eb20d6685b2.gif

答案将在5秒后公布。

答案是 "banana"

JavaScript 真是匪夷所思 🤐🔥

你可能诧异不已、质问我 “你疯了吗?”,怎么可能会是这个结果?请你先冷静冷静,让我为你分析分析。

630ef1759ffabaebafd4e66e2d303748.png

解析工作原理

下面,让我们分步解释代码的运作原理:

  • "b" + "a" 连接字符串,得到 "ba"。

  • + + "a" 试图将字符串 "a" 转换为数字,由于 "a" 非有效数字,所以结果为 NaN("非数字")。

  • "ba" + NaN 将字符串 "ba" 与值 NaN 连接,得到 "baNaN"。

  • "baNaN" + "a" 将 "baNaN" 与 "a" 连接,得到 "baNaNa"。

  • 最后,调用 .toLowerCase() 方法,将字符串 "baNaNa" 所有字符转换为小写,得到 "banana"。

所以,代码的最终输出就是 "banana"。

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

推荐阅读:

中国程序员拒写赌博程序被拔14颗牙;iPhone 15系列USB-C数据线曝光;Flutter 3.13发布|极客头条

▶前华为天才少年稚晖君创业6个月造出人形机器人,百亿参数大模型加持、目标成本20万元以内

▶系统时间随机跳到 55 天后,程序出 Bug,开发者:这是 Windows 系统功能搞得鬼!

141630278d5486f619f8b46bf01f2c39.jpeg

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK