0

试图绕过我正在查看的一些 JavaScript 代码。我看到这样的事情:

var myVariable = "X";
var result = myVariable * 6;

来自 C# 背景,这对我来说是新的。有人可以给我一个关于这里发生了什么的快速入门吗?我猜结果将等于字母表中的字母位置乘以 6,我是正确的吗?

4

3 回答 3

2

结果将是NaN因为“X”不是数字;将字符串与数字相乘将始终返回NaN

更多信息:http ://es5.github.com/

* 运算符执行乘法,产生其操作数的乘积。乘法是可交换的。由于有限的精度,乘法在 ECMAScript 中并不总是关联的。

浮点乘法的结果受 IEEE 754 二进制双精度算术规则的约束:

  • 如果任一操作数为 NaN,则结果为 NaN。

如果你想得到字母在英文字母表中的位置,试试这个

myVariable.toUpperCase().charCodeAt(0) - 65;
于 2013-03-24T22:15:48.597 回答
2

我猜结果将等于字母表中的字母位置乘以 6,我是正确的吗?

不。JS 是弱类型的,并且值被隐式类型转换以匹配运算符(此处为乘法)。在这种情况下,字符串"X"将被转换为数字- 导致NaN它不是有效的数字文字。result那么也会NaN如此。

要获得字母表中的位置,您可以使用带有非十进制基数的parseInt函数parseInt("X", 36)-10( ) 或charCodeAt字符串方法( "X".charCodeAt(0)-65)。

于 2013-03-24T22:17:12.803 回答
1

我认为s重复字符串的最简单解决方案n是:

Array(n+1).join(s)

再次阅读您的问题:将第一个字母的字符代码s乘以n

s.charCodeAt(0) * n

要获取与该乘法字符码相对应的字符:

String.fromCharCode(s.charCodeAt(0) * n)
于 2013-03-24T22:17:48.473 回答