Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript var=密钥不工作?_Javascript - Fatal编程技术网

JavaScript var=密钥不工作?

JavaScript var=密钥不工作?,javascript,Javascript,有人知道这是怎么回事吗?我有密码 console.log('cCP: '+chatCurrentPlace+' - key: '+key); if(key>chatCurrentPlace){chatCurrentPlace=key;} console.log('cCP: '+chatCurrentPlace+' - key: '+key); 和控制台日志 cCP: 0 - key: 4 cCP: 4 - key: 4 cCP: 4 - key: 7 cCP: 7 - key:

有人知道这是怎么回事吗?我有密码

console.log('cCP: '+chatCurrentPlace+' - key: '+key); 
if(key>chatCurrentPlace){chatCurrentPlace=key;} 
console.log('cCP: '+chatCurrentPlace+' - key: '+key);
和控制台日志

cCP: 0 - key: 4 
cCP: 4 - key: 4 
cCP: 4 - key: 7 
cCP: 7 - key: 7 
cCP: 7 - key: 8 
cCP: 8 - key: 8 
cCP: 8 - key: 9 
cCP: 9 - key: 9 
cCP: 9 - key: 11 
cCP: 9 - key: 11 

为什么最后一个不起作用?它应该是cCP:11-key:11

您的一个或两个变量可能是字符串,因此将它们作为字符串而不是数字进行比较<代码>“9”>“11”,原因与
“b”>“aa”
相同(字符串逐字符比较,直到第一个索引出现差异为止)

将测试中的值转换为数字(例如,使用):

或:


如果,您可能希望在到达
之前转换值,以便它们始终保持数字。

您确定键和cCP值不作为字符串吗?看起来它们是按字母顺序排序的,不像数字。 试一试


在比较这两个变量之前,先比较它们。

看起来您是在比较字符串而不是数字<代码>“9”>“11”
是正确的。我同意@freakish。您可以检查键的类型,以便更详细地了解它。。。比较字符串时,它会逐个字符进行比较。所以
(“9”>“11”)
实际上是
(9>1)
。我计算出最后一个键是一个11的字符串,而不是一个数字,出于某种原因:-/ohhh它们都是字符串lol,这很有意义好,谢谢大家:-)我刚做了(键>(chatCurrentPlace*1)),一切都很好地使用
parseInt
(需要大写的
i
)没有基数几乎总是一个坏主意。谢谢,我不知道你可以用+转换为数字,我通常使用(某物*1),但我更喜欢+IMHO,因为它们隐藏了太多的内容,使代码更难阅读。我更喜欢使用
Number()
。是的,它更容易输入,但好的代码是可读的代码,而不是短代码。
if( +key > +chatCurrentPlace ){ chatCurrentPlace = key; } 
if( parseInt(key, 10) > parseInt(chatCurrentPlace, 10) ){ chatCurrentPlace = key; } 
key = parseInt(key,10);