比较运算符的本质是比较两个数字的大小并返回一个布尔值true或者false;
一、数字类型
<script>
console.log(2>1);
console.log(2<1);
console.log(2>=1);
console.log(2<=1);
console.log(2!=1);
console.log(2==1);
console.log(2===1);
console.log(2!==1);
</script>
二、字符串类型
当两边都是字符串类型进行比较时,比较的是字符串的ASCll码值的大小;
<script>
console.log('3'>'23'); //3的ASCll码值大于23的2的ASCll码值,所以结果为true
console.log('23'>'24');//23和24的第一个字符都是2,继续比较第二个字符,3的ASCll码值小于4的ASCll码值,结果为false
</script>
三、其他数据类型
除了字符串的其他数据类型进行比较的时候,会转换为数字类型进行比较;
<script>
console.log(3>true); //true->1,结果为true
console.log(3>false); //false->0,结果为false
console.log(3>undefined); //undefined无法比较,结果为false
console.log(3>null); //null->0,结果为true
</script>
四、相等== 与 全等=== 的区别
<script>
console.log(3=='3'); //3等于'3',结果true
console.log(3!='3'); //false
console.log(3==='3'); //3不全等与'3',结果false
console.log(3!=='3'); //true
</script>
区别:
相等:比较的是数据的值是否相等;
全等:比较的不只是数据的值是否相等,而且还有数据的类型是否相等;
ps:
1、null不能和0相比,虽然null转换为数字类型就是0,但是null==0返回值为false;
2、NaN不等于任何一个数字,也不等于它本身,NaN!=NaN;
3、null == undefined,null !== undefined,null等于undefined,但是null不全等于undefined;
4、在比较运算符中,不要连续的使用比较运算符,因为最后是布尔值在和数值比较;
<script>
console.log(3>2>1);
// false,3>2结果为true,再进行后面的将true转换为1与1进行比较,true>1也就是1>1,结果为false
</script>