javascript - 为什么 ('b' +'a'++ 'a' + 'a').toLowerCase() 'banana' 的结果是什么?

标签 javascript type-conversion

当我的一个 friend 偶然发现这段 JavaScript 代码时,我正在练习一些 JavaScript:

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

以上代码回答"banana"! 谁能解释一下为什么?

最佳答案

+'a' 解析为 NaN(“非数字”),因为它将字符串强制转换为数字,而字符 a 不能解析为数字。

document.write(+'a');
小写变成 banana

"ba"加上NaN,由于类型转换,将NaN变成字符串"NaN",给出 baNaN。 然后后面有一个a,给出baNaNa

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

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

关于javascript - 为什么 ('b' +'a'++ 'a' + 'a').toLowerCase() 'banana' 的结果是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57456188/

相关文章:

javascript - 如何使用 Ember.Logger 获得与 console.log 相同的输出?

javascript - 如何使用 Google Analytics 跟踪 AJAX GET 请求和 PDF 下载?

javascript - Twitter Typehead.JS - 使用 AJAX 调用的自定义 div

pointers - 从 (type *int) 到 int 类型的类型转换

c++ - (GCC 错误?)隐式转换为派生类

arrays - 在 VB.NET 中将字符串数组转换为 double 组

javascript - 如何在VUE中通过v-model直接更新嵌套对象数组值?

c++ - 显式转换与隐式使用虚函数引用

c - 带括号的强制类型转换

javascript - 如何将参数传递给 Angular 中的 ng 事件处理程序?