一段惊呆下巴的 JavaScript 代码

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()

可选择的答案如下:

  • baaa

  • ba01100001a

  • baa

  • ba1a

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

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

e13a35c183fa580f6d581eb20d6685b2.gif

答案将在5秒后公布。

5.

4.

3.

2.

1.

答案是 "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

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSDN资讯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值