首页 > JavaScript >  JavaScript  为什么 (’b’+’a’+ + ‘a’ + ‘a’).toLowerCase() 的结果是 ‘banana’?

 JavaScript  为什么 (’b’+’a’+ + ‘a’ + ‘a’).toLowerCase() 的结果是 ‘banana’?

上一篇 下一篇

当我的一个朋友遇到这个JavaScript代码时,我正在练习一些JavaScript:

document.write(('b' + 'a' + + 'a' + 'a').toLowerCase());

上面的代码回答!
谁能解释为什么?
"banana"

分割线

网友回答:

+'a'解析为 (“Not a Number”),因为它将字符串强制为数字,而该字符无法解析为数字。NaNa

document.write(+'a');

小写变为 .banana

由于类型转换而添加到字符串中,给出 .
然后有一个背后,给.
NaN"ba"NaN"NaN"baNaNabaNaNa

两者之间的空格是使第一个字符串连接和第二个字符串连接成为一元加号(即“正”)运算符。
如果使用 ,解析为 ,则结果相同,这等效于 由于类型杂耍。
+ +'ba'+(+'a')+'a''ba'+NaN+'a''ba'+'NaN'+'a'

document.write('ba'+(+'a')+'a');

分割线

网友回答:

'b' + 'a' + + 'a' + 'a'

…被评估为….

'b' + 'a' + (+'a') + 'a'

(请参阅:运算符优先级)

(+'a')尝试使用一元加运算符转换为数字。因为不是数字,所以结果是(“不是数字”):'a''a'NaN

'b'  +  'a'  +  NaN  + 'a'

虽然代表“不是数字”,但它仍然是数字类型;当添加到字符串时,它会像任何其他数字一样连接:NaN

'b'  +  'a'  +  NaN  + 'a'  =>  'baNaNa'

最后,它是小写的:

'baNaNa'.toLowerCase()      =>  'banana'

分割线

网友回答:

('b' + 'a' + + 'a' + 'a').toLowerCase()

为了清楚起见,让我们将其分解为两个步骤。首先,我们获取括号表达式的值,然后将函数应用于结果。toLowerCase()

第一步

'b' + 'a' + + 'a' + 'a'

L-R,我们有:

  • 'b' + 'a'返回 ba,这是常规串联。
  • ba + + 'a'尝试将 BA 与 连接。但是,由于一元运算符尝试将其操作数转换为数字,因此返回值 NaN,然后在与原始 ba 连接时将其转换为字符串,从而产生 baNaN+ 'a'+
  • baNaN+ ‘a’ 返回 baNaNa。同样,这是常规串联。

在这个阶段,第一步的结果是baNaNa。

第二步

应用从步骤 1 返回的值将得到:.toLowerCase()

香蕉

JavaScript 中有许多类似的双关语,您可以查看。

模板简介:该模板名称为【 JavaScript  为什么 (’b’+’a’+ + ‘a’ + ‘a’).toLowerCase() 的结果是 ‘banana’?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 260次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 04-22
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
单页式简历模板 html5 自适应 微信素材 企业网站 微信文章 微信模板 微信图片 响应式 微信公众平台
您可能会喜欢的其他模板