试图绕过我正在查看的一些 JavaScript 代码。我看到这样的事情:
var myVariable = "X";
var result = myVariable * 6;
来自 C# 背景,这对我来说是新的。有人可以给我一个关于这里发生了什么的快速入门吗?我猜结果将等于字母表中的字母位置乘以 6,我是正确的吗?
试图绕过我正在查看的一些 JavaScript 代码。我看到这样的事情:
var myVariable = "X";
var result = myVariable * 6;
来自 C# 背景,这对我来说是新的。有人可以给我一个关于这里发生了什么的快速入门吗?我猜结果将等于字母表中的字母位置乘以 6,我是正确的吗?
结果将是NaN
因为“X”不是数字;将字符串与数字相乘将始终返回NaN
。
* 运算符执行乘法,产生其操作数的乘积。乘法是可交换的。由于有限的精度,乘法在 ECMAScript 中并不总是关联的。
浮点乘法的结果受 IEEE 754 二进制双精度算术规则的约束:
- 如果任一操作数为 NaN,则结果为 NaN。
如果你想得到字母在英文字母表中的位置,试试这个:
myVariable.toUpperCase().charCodeAt(0) - 65;
我猜结果将等于字母表中的字母位置乘以 6,我是正确的吗?
不。JS 是弱类型的,并且值被隐式类型转换以匹配运算符(此处为乘法)。在这种情况下,字符串"X"
将被转换为数字- 导致NaN
它不是有效的数字文字。result
那么也会NaN
如此。
要获得字母表中的位置,您可以使用带有非十进制基数的parseInt
函数parseInt("X", 36)-10
( ) 或charCodeAt
字符串方法( "X".charCodeAt(0)-65
)。
我认为s
重复字符串的最简单解决方案n
是:
Array(n+1).join(s)
再次阅读您的问题:将第一个字母的字符代码s
乘以n
:
s.charCodeAt(0) * n
要获取与该乘法字符码相对应的字符:
String.fromCharCode(s.charCodeAt(0) * n)