var a = "23" < "3",a为什么是boolean值true?

var a="23" < "3";
console.log(a);    // true
console.log(isNaN(a));    // false

偶然遇到的,请帮忙解答,谢谢

阅读 5.8k
11 个回答

https://developer.mozilla.org...

C developers have the strcmp() function for comparing strings. In JavaScript, you just use the less-than and greater-than operators:

就是strcmp的规则吧....

两个字符串自左向右逐个字符相比(按ASCII值大小相比较),
2<3

字符串比较就是这结果吧

因为是字符串

字符串之间比较的是首个字符开始逐个比较。

先拿第一位比较,再依次比较。

你需要首先弄懂字典序

function strcmp (s1, s2) {
    
    var len = Math.min(s1.length, s2.length);
    
    for(var i = 0; i < len; i++) {
        
        var c1 = s1.charCodeAt(i),
            c2 = s2.charCodeAt(i);
            
        if(c1 != c2) return c1 - c2;
    }
    
    return s1.length - s2.length;
}

strcmp ("23", "3") < 0;
// true

字符串比较,现比较第一位。2<3,over!

1.字符串,以及字符串比较
2.js是弱类型语言,字符串与数字之间的转换
3.运算符的优先级别

我来回答

var a="23" < "3"

相当于

var a=("23" < "3")

而字符串比较是按字符逐个比较,"2"在ASCII中值比"3"小,所以"23""3"小,所以结果为真(true)

这是符号的优先级导致的,<的优先级比=的高

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏