JavaScript 比较运算符
比较运算符用于比较两个表达式的结果。如变量 num 加上 变量 offset 是否 大于0 ,大于就是 一个 比较运算符。
比较运算符还分为 相等运算符 与 关系运算符 。
相等运算符:
== 相等 != 不相等 === 严格相等 !== 严格不相等
关系运算符:
> 大于 >= 大于等于 < 小于 <= 小于等于
运算符返回的都是布尔值。
运算符左右的值也被称为操作数。
1. 相等运算符
相等运算符用于判断运算符左右两边的值是否一致。
很多资料也会把相等称为等于,严格相等被称作严格等于。
1.1 相等
相等运算符在进行比较的时候,如果两边操作数数据类型不同,则会尝试转换成相同的类型再进行比较,如果转换成相同类型后的值相同,则返回 true,否则返回 false。
如果比较的两个操作数是引用类型,则会比较内部的引用(是否引用同 一个 内存地址上的值)。
'3' == ; // true == '3' ; // true == ; // false + == ; // true var obj1 = { a : } ; obj1 == { a : } ; //false var obj2 = obj1 ; obj1 == obj2 ; // true undefined == null ; // true == true ; // true == false ; // true
因为 内容 比较简单,推荐直接在控制台调试,可以 快速 看到结果。
具体的转化规则可以查阅 隐式转换 章节。
注意:相等会对不同类型的比较数据进行隐式转换,为了防止误导阅读 代码 的开发者对转换进行猜测,以及避免一些不可控的问题,大部分开发者会选择不使用相等。
1.2 不相等
不相等的比较机制和相等一致,类型相同直接比较,不相同的会尝试转换成相同类型,碰到引用类型则比较引用地址是否一致。区别就在于最后返回的结果与相等相反,比较结果如果不一致,则返回 true,一致则返回 false。
!= ; // false != ; // true var obj1 = { a : } ; obj1 != { a : } ; // true
1.3 严格相等
严格相等在比较的时候,碰到两边的操作数类型不同,则会直接返回 false ,不会进行类型的转换。
当类型一样时,则比较等号两边的值是否相等,相等则返回 true ,否则返回 false。
=== '1' ; // false; === false ; // false
严格相等更加严格,程序中使用严格相等可以避免许多不可控的类型转换,特别是当开发者不熟悉转换规则时候,应尽可能使用严格相等。
1.4 严格不相等
严格不相等在比较的时候,如果两边的操作数不相等则返回 true ,否则返回 false 。其和严格相等一样,不会进行类型转换。
!== ; // false !== ; // true !== '1' ; // true undefined !== null ; // true
注意:在做不相等运算的时候,也应该尽可能选择严格不相等,原因与建议使用严格相等一致。
2. 关系运算符
2.1 大于
大于运算符会在左操作数大于右操作数的时候返回 true,否则返回 false。
> ; // false > ; // false > ; // true
2.2 大于等于
大于运算符会在左操作数大于等于右操作数的时候返回 true,否则返回 false。
>= ; // false >= ; // true >= ; // true
2.3 小于
小于运算符会在左操作数小于右操作数的时候返回 true,否则返回 false。
< ; // true < ; // false < ; // false
2.4 小于等于
小于等于运算符会在左操作数小于等于右操作数的时候返回 true,否则返回 false。
<= ; // true <= ; // true <= ; // false
3. 注意点
3.1 字符串进行比较
假如比较运算符的两侧操作数都为字符串,则碰到 中文 ,会将 中文 转化成对应的 Unicode 码,碰到英文则转化成对应的 ASCII 码,再对码值进行比较。
'a' > 'z' ; // false
a 的 ASCII 码为 97, z 的 ASCII 码为 122,两者在比较的时候相当于是 97 > 122 ,结果就是 false。
如果碰到有多个字符,则会依次进行比较。
'aaaaaz' > 'aaaaaaaaa' ; // true
两个操作数前五位都是 a ,所以第六位才能决定出结果。
4. 小结
比较运算符主要用于比较两个值的大小关系,特别需要注意的是严格相等与相等的区别。
JavaScript 逻辑运算符 ? ?JavaScript 算数运算符查看更多关于JavaScript 比较运算符的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did92401