为啥 Banana 在 JavaScript 中打印? [复制]

Posted

技术标签:

【中文标题】为啥 Banana 在 JavaScript 中打印? [复制]【英文标题】:Why does Banana is printing in JavaScript? [duplicate]为什么 Banana 在 JavaScript 中打印? [复制] 【发布时间】:2022-01-06 22:32:41 【问题描述】:

今天我尝试使用 nodejs 打印随机字母,不知何故我试图在日志中打印“香蕉”,但不幸的是我错过了 n(字母)来记录,但它仍然可以正常工作。为什么它打印整个 banana 而不是 'baaa'?

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

输出是banana,但为什么呢?即使+ +(空字符)生成NaN,它仍然应该打印bananaa,而不仅仅是banana

截图:

【问题讨论】:

它尝试添加为数字并获取 NaN 并将其余部分添加为字符串,并且 NaN.toString 是 NaN,因此它变为 baNaNa 而没有 toLowerCase。当你在 + + 符号之后的第二个字母上使用 'b' + 'a' + + 'c' + 'a' 这个或任何其他字符时,也没关系 如果您不使用toLowercase(),您可以在其中看到NaN,它告诉您您正在使用的数学运算 (+ + 'a') 导致的结果不是号码。 【参考方案1】:

额外的+ 在后面的“a”上充当一元运算符,并尝试将其强制为一个数字,从而导致 NaN。其余的+ 符号都被解释为字符串连接,这导致NaN 被强制转换为字符串,即。 ('b' + 'a' + + 'a' + 'a') = ('b' + 'a' + NaN + 'a') = ('baNaNa').

【讨论】:

你的意思是aNaN 也需要第二个?因为它有 3 个a 没有NaN 中间的 'a' 被前面的 + 强制转换为 NaN,然后​​其余的正常连接。如果您在开发控制台中评估 + 'a',您会看到它的评估结果为 NaN。 我明白了,我只是为了好玩而把它放出来,你得到了无限量的支持 :) 祝你有美好的一天。请修改答案,也许它会帮助其他人。【参考方案2】:

有趣!!

console.log(('b' + 'a' + + 'a' + 'a').toLowerCase());

console.log(('b' + 'a' + + 'a' + 'a'));

console.log(( 'a' + + 'b' ));

//output
banana
baNaNa
aNaN

在第三条语句中,'b' 不打印为 + + 'b' = NaN //not a number 并且 .toLowerCase() 使它成为 nan 因此单词 banana

【讨论】:

谢谢兄弟,现在大家都明白了:)我已经接受了一个答案。感谢您的宝贵时间。【参考方案3】:

由于您什么都不添加,因此很可能返回 NaN

【讨论】:

以上是关于为啥 Banana 在 JavaScript 中打印? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥JPEG格式在W7操作系统下的windows中打不开?

为啥即使我的数据库已连接,我的 Heroku 应用程序在其他设备中打开时也没有加载任何数据?

为啥我在3D中打灯光没有阴影效果

javascript 在 mozilla 中运行良好,但在 IE6 中出现未知的运行时错误,为啥?

javascript正则表达式如何表达同时包含多个字符串

JavaScript数组方法