为什么结果是 ('b'+'a'+ + 'a' + 'a').toLowerCase() 'banana'? [英] Why is the result of ('b'+'a'+ + 'a' + 'a').toLowerCase() 'banana'?

查看:25
本文介绍了为什么结果是 ('b'+'a'+ + 'a' + 'a').toLowerCase() 'banana'?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我的一位朋友看到这段 JavaScript 代码时,我正在练习一些 JavaScript:

I was practicing some JavaScript when one of my friends came across this JavaScript code:

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

上面的代码回答banana"!谁能解释一下原因?

The above code answers "banana"! Can anyone explain why?

推荐答案

+'a' 解析为 NaN ("Not a Number") 因为它强制一个字符串为数字,而字符 a 不能解析为数字.

+'a' resolves to NaN ("Not a Number") because it coerces a string to a number, while the character a cannot be parsed as a number.

document.write(+'a');

小写它变成banana.

"ba"中添加NaN,由于类型转换,NaN变成了字符串"NaN",给出 baNaN.然后后面还有一个a,给baNaNa.

Adding NaN to "ba" turns NaN into the string "NaN" due to type conversion, gives baNaN. And then there is an a behind, giving baNaNa.

+ + 之间的空格是将第一个字符串连接起来,第二个是一元加号(即正")运算符.如果您使用 'ba'+(+'a')+'a',则结果相同,解析为 'ba'+NaN+'a',即由于类型杂耍,相当于 'ba'+'NaN'+'a'.

The space between + + is to make the first one string concatenation and the second one a unary plus (i.e. "positive") operator. You have the same result if you use 'ba'+(+'a')+'a', resolved as 'ba'+NaN+'a', which is equivalent to 'ba'+'NaN'+'a' due to type juggling.

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

这篇关于为什么结果是 ('b'+'a'+ + 'a' + 'a').toLowerCase() 'banana'?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆