(js基础篇)2.值的比较

827 阅读2分钟

1.比较结果为Boolean类型

  • true表示正确
  • false表示错误

代码:

console.log( 5 > 4 ); // true
console.log( 2 == 1); // false
console.log( 5 != 4 ); // true

2.字符串比较

  • 在比较字符串的大小时,js会使用"字典"或"词典"顺序进行判定。

代码:

console.log( 'Z' > 'A' ); // true
console.log( 'James' > 'Kobe' ); // false
console.log( 'James' > 'Jame'); // true

字符串的比较算法:

1.首先比较两个字符串的首位字符大小。
2.如果一方字符较大,则该字符串大于另一个字符串。算法结束
3.如果两个字符串的首位字符相等,则继续取出两个字符串各自的后一位字符进行比较。
4.重复上述步骤进行比较,直到比较完成某个字符串的所有字符为止
5.如果两个字符串的字符同时用完,那么则判定他们相等,否则未结束的字符串更大

3.不同类型间的比较

  • 对不同类型的值进行比较时,js会首先将其转为数字(number)再判定大小。

    console.log('3' > 1); // true console.log('001' == 1); // true // 对于布尔类型值,true会被转化为1,false转化为0 console.log( true == 1 ); // true console.log( false == 0 ); // true

4.严格相等

  • ==不能区分出0false
  • ==无法区分空字符串和false
  • ===在比较时不会做任何的类型转换
  • 与“不相等”符号!=类似,“严格不相等”表示为!==

代码:

console.log( 0 == false ); // true
console.log( '' == false ); // true
console.log( 0 === false ); // false

5.对null和undefined进行比较

  • 当使用===比较二者时,为false
  • 当使用==比较二者时,为true
  • 当使用null/undefined 会被转化为数字:null0undefined 被转为NaN
  • 比较 null0 ,结果 null >= 0 为true, null == 0 为false, null > 0 为false
  • undefined和其他值比较都是false

代码:

console.log( null === undefined ); // false
console.log( null == undefined ); // true
console.log( null > 0 ); // false
console.log( null == 0 ); // false
console.log( null >= 0 ); // true
console.log( undefined > 0 ); // false
console.log( undefined < 0 ); // false
console.log( undefined == 0 ); // false