当我的一个朋友遇到这个 JavaScript 代码时,我正在练习一些 JavaScript:
document.write(('b' + 'a' + + 'a' + 'a').toLowerCase());
上面的代码回答"banana"!谁能解释为什么?
"banana"
+'a'解析为NaN(“Not a Number”) 因为它将字符串强制转换为数字,而字符a不能被解析为数字。
+'a'
NaN
a
document.write(+'a');
小写它变成banana.
banana
由于类型转换,添加NaNto"ba"变成NaN字符串,给出. 然后有一个背后,给予。"NaN"``baNaN``a``baNaNa
"ba"
"NaN"``baNaN``a``baNaNa
之间的空间+ +是使第一个字符串连接和第二个一元加号(即“正”)运算符。如果您使用'ba'+(+'a')+'a', 解析为,您将获得相同的结果'ba'+NaN+'a',这相当于'ba'+'NaN'+'a'由于类型杂耍。
+ +
'ba'+(+'a')+'a'
'ba'+NaN+'a'
'ba'+'NaN'+'a'
document.write('ba'+(+'a')+'a');