一段惊呆下巴的 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"。
你答对了吗?在学习和工作编码过程中是否也遇到过类似的奇怪问题?欢迎在评论区留言分享。
推荐阅读:
▶中国程序员拒写赌博程序被拔14颗牙;iPhone 15系列USB-C数据线曝光;Flutter 3.13发布|极客头条
▶前华为天才少年稚晖君创业6个月造出人形机器人,百亿参数大模型加持、目标成本20万元以内
▶系统时间随机跳到 55 天后,程序出 Bug,开发者:这是 Windows 系统功能搞得鬼!
版权声明:
本文为[CSDN资讯]所创,转载请带上原文链接,感谢
https://blog.csdn.net/csdnnews/article/details/132419304