当我的一个朋友遇到这个JavaScript代码时,我正在练习一些JavaScript:
document.write(('b' + 'a' + + 'a' + 'a').toLowerCase());
上面的代码回答!
谁能解释为什么?"banana"
+'a'
解析为 (“Not a Number”),因为它将字符串强制为数字,而该字符无法解析为数字。NaN
a
document.write(+'a');
小写变为 .banana
由于类型转换而添加到字符串中,给出 .
然后有一个背后,给.NaN
"ba"
NaN
"NaN"
baNaN
a
baNaNa
两者之间的空格是使第一个字符串连接和第二个字符串连接成为一元加号(即“正”)运算符。
如果使用 ,解析为 ,则结果相同,这等效于 由于类型杂耍。+ +
'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】栏目查找您需要的精美模板。