3

任何人都知道这是怎么回事我有代码

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

4

2 回答 2

7

您的一个或两个变量可能是字符串,因此被比较为字符串而不是数字。"9" > "11"出于同样的原因"b" > "aa"(字符串逐个字符进行比较,直到它们不同的第一个索引)。

在您的测试中将值转换为数字(例如使用一元 + 运算符):

if( +key > +chatCurrentPlace ){ chatCurrentPlace = key; } 

功能_parseInt

if( parseInt(key, 10) > parseInt(chatCurrentPlace, 10) ){ chatCurrentPlace = key; } 

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

于 2013-05-18T17:33:27.210 回答
2

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

key = parseInt(key,10);

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

于 2013-05-18T17:35:29.580 回答