自学JS接近两个月,遇到的问题真不少,js真是一门让人惊喜的语言,弱类型语言
下面我就简单谈一谈关于JavaScript中关于 字符串 与 数字 比较大小的那些事
//1.纯数字之间比较
console.log(1<3);//true
//2.纯字符串比较,先转成ASCII码,按位依次比较
console.log("1"<"3");//true
console.log('5'<'10');//false
console.log("5".charCodeAt());//53
console.log("1".charCodeAt());//49
console.log("123"<"123");//false
console.log("a"<"b");//true
console.log("a".charCodeAt());//97
console.log("b".charCodeAt());//98
console.log("abc"<"aad");//false
//3.汉字比较
console.log("我".charCodeAt());//25105
console.log("的".charCodeAt());//30340
console.log("我"<"的");//true,汉字比较,转成ASCII码
//4.当数字和字符串比较,且字符串为数字。则将数字字符串转为数字
console.log(123<"124");//true,下面一句代码得出124的ASCII码为49,所以并不是转成ASCII比较
console.log("124".charCodeAt());//49
//5.当数字和字符串比较,且字符串为非纯数字时,则将非数字字符串转成数字的时候会转换为NaN,当NaN和数字比较时不论大小都返回false.
console.log(13>"abc")//false
总结起来就3点:
1:纯字符串比较,转换成ASCII码在进行比较;
2:纯数字和数字字符串相比较,则将字符串数字隐式转换成数字再进行比较;
3:纯数字和非数字字符串比较,都返回false;
以上,如有不足或者错误之处,还请指出,谢谢!