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);
答案 0 :(得分:5)
将'a'
之类的非数字字符串转换为数字时,会得到NaN
:
console.log(+'a'); // NaN
console.log('a' * 1); // NaN
console.log(Number('a')); // NaN
NaN
总是在关系比较中产生false
。 Trichotomy不成立:
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;不是数字,因此与数字进行比较会在任何情况>
,<
或==
给您错误。