var返回到NaN而不是数字



嘿,我有一个类似的东西

var zxc1 = 1846;
var zxc2 = 1649;
var zxc3 = 174;
var zxc4 = 27;
if(message.toLowerCase() == ('!asd')) { client.say(channel, `zxc1`  +`(${+ zxc1.toLocaleString()})` +` | zxc2 `+`(${+ zxc2.toLocaleString()})` +` | zxc3 ` +`(${+ zxc3.toLocaleString()})` +` | zxc4 ` +`(${+ zxc4.toLocaleString()})` +` | :) `);}

打字后!asd:

结果:zxc1(NaN) | zxc2 (NaN) | zxc3 (174) | zxc4 (27) | 2

怎么了?

为什么zxc3和zxc4工作,但zxc1和zxc2没有

${+ zxc1.toLocaleString()}中,+将应用于zxc1.toLocaleString()的结果,以将其强制返回到一个数字(这似乎适得其反(。

如果你不确定某个数字是否为数字,我建议你使用数字功能,例如${Number(zxc1).toLocaleString()},而不是使用+

3和4之所以有效,是因为(很可能(您的区域设置添加了数千个分隔符,因此1和2不能直接返回到数字

最新更新