JavaScript var = key不起作用?

时间:2013-05-18 17:30:22

标签: 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: 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

2 个答案:

答案 0 :(得分:7)

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

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

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

the parseInt function

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

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

答案 1 :(得分:2)

您确定密钥和cCP值不是字符串吗?看起来它们按字母顺序排序,与数字不同。 试试

key = parseInt(key,10);

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