试图解决一些我正在查看的JavaScript代码。我看到这样的事情:将数字乘以一个数字
var myVariable = "X";
var result = myVariable * 6;
来自C#背景,这对我来说是新的。有人能够快速介绍一下这里发生了什么吗?我猜结果将等于字母表中的字母乘以6的位置,我会是正确的吗?
试图解决一些我正在查看的JavaScript代码。我看到这样的事情:将数字乘以一个数字
var myVariable = "X";
var result = myVariable * 6;
来自C#背景,这对我来说是新的。有人能够快速介绍一下这里发生了什么吗?我猜结果将等于字母表中的字母乘以6的位置,我会是正确的吗?
我猜测,结果是等于该字母位置字母乘以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
)。
'“a”.charCodeAt(0)-65 // 32'我不认为有第32个字母表... – 2013-03-24 22:31:01
@Derek:这是ASCII码。对于小写字母,你需要减去97. – Bergi 2013-03-24 22:48:54
结果将是NaN
,因为“X”不是数字;将一个字符串乘以一个数字总是会返回NaN
。
的更多信息:http://es5.github.com/
*运算符执行乘法,产生它的操作数的乘积。乘法是可交换的。由于精度有限,ECMAScript中的乘法并不总是关联的。
浮点乘法的结果是由IEEE 754二进制双精度算术的规则进行:
- 如果操作数是NaN,则结果是NaN。
如果你想信在英文字母的位置,尽量this:
myVariable.toUpperCase().charCodeAt(0) - 65;
'NaN'对于那些不知道的人来说不是一个数字。 – 2013-03-24 22:16:25
'Array(16).join(6 *'X')+'蝙蝠侠!'是那些不知道的蝙蝠侠歌曲。 – 2013-03-24 23:31:50
@Tomás - 不错的一个! – 2013-03-24 23:33:51
我认为最简单的解决方案有一个字符串s
重复n
时间是:
Array(n+1).join(s)
重读你的问题:通过n
繁衍s
的第一个字母中charCode:
s.charCodeAt(0) * n
要获得对应于该乘以charcode的字符:
String.fromCharCode(s.charCodeAt(0) * n)
试一下,看看结果是什么! – Bergi 2013-03-24 22:14:55
按F12键入“x”* 6,查看结果NaN。开发人员控制台是最终方便的工具。 – 2013-03-24 22:15:51
@fastreload或节点。 ;) – beakr 2013-03-24 22:16:12