You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么JavaScript中('b'+'a'++'a'+'a').toLowerCase()会输出banana?

问题原因

我们逐段拆解('b' + 'a' + + 'a' + 'a').toLowerCase()的执行逻辑就能明确原因:

  • 运算从左到右执行,首先'b' + 'a'是普通字符串拼接,得到结果'ba'
  • 接下来的+ + 'a'中,第二个+是一元正运算符,作用是将后面的'a'强制转换为数字类型。由于'a'不是合法的数字格式,转换结果为NaN
  • 此时前面的字符串'ba'和NaN做+运算,会先把NaN转为字符串'NaN',拼接后得到'baNaN'
  • 再拼接后面的'a',得到字符串'baNaNa'
  • 最后调用.toLowerCase()将所有字符转为小写,最终结果就是'banana'

你之前误以为会得到'bananaa',是错误估计了NaN转字符串后的拼接结果,实际上NaN转为字符串后会贡献N、a、N三个字符,加上前后的ba和末尾的a,刚好组合成转小写后等于banana的字符串。

运行结果截图


内容的提问来源于stack exchange,提问作者Tahazzot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:24:02