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