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);