Javascript中比较中的字符串和数字

时间:2016-06-27 18:08:36

标签: javascript

var result='16'>'141';
console.log(result);

var result='16'>141;
console.log(result);

  

那是因为如果任何操作数不是字符串,那么两者都是   操作数变为数字,比较变得正确。

任何人都可以告诉我。如何评估下面的等式?

var result='a'>11;
console.log(result);

'a'>11=> Answer should be true instead of false;

,因为  'a' will convert to int 97 > 11 => true然后评估false。 如果我这样'a'>'11' => then it answer comes true

var result='a'>'11';
    console.log(result);

2 个答案:

答案 0 :(得分:5)

'a'之类的非数字字符串转换为数字时,会得到NaN

console.log(+'a');        // NaN
console.log('a' * 1);     // NaN
console.log(Number('a')); // NaN

NaN总是在关系比较中产生falseTrichotomy不成立:

console.log(NaN < 0);  // false
console.log(NaN > 0);  // false
console.log(NaN == 0); // false

如果您想将'a'转换为97,请使用charCodeAt

console.log('a'.charCodeAt(0)); // 97

答案 1 :(得分:0)

Javscript使用抽象等式比较算法

http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3

比较字符串和数字时,字符串会转换为数字,但您会想到某些ASCII代码。

因为&#39; a&#39;不是数字,因此与数字进行比较会在任何情况><==给您错误。