第三章 基本概念(二)操作符(三)

关系操作符

小于(<),大于(>),小于等于(<=),大于等于(>=)这几个关系操作符用于对两个值进行比较。这几个操作符都会返回一个布尔值

如下面的例子所示:
var result = 5>3 ; //true
var result2 = 5<3 ; // false

当关系操作符的操作数使用了非数值时,也要进行数据转换完成。

  • 如果两个操作数都是数值,则执行数值比较.
  • 如果两个操作数都是字符串,则比较两个字符串对应的编码值.
  • 如果一个操作数是数值,则将另外那个操作数转换成一个数值,然后比较
  • 如果一个操作数是对象,则执行valueof()方法,用得到结果按照前面的规则进行比较,如果对象没有valueof()方法,则调用toString()并用得到的结果一句前面的规则进行比较
  • 如果一个操作数是布尔值,则先将其转换为数值,然后在比较.

简单来说就是使用关系操作符比较时候,她会先执行转为数值或者ascii码在比较

var result = "23" < "3"; //结果true 因为两边都是字符串。所以比较的是ASC码
var result = "23" <3 ; //false 因为右边是数值了,他会传化23.
var result = "a" <3 ; //false 因为a被转换成了NaN

结论:只有当左右两边都是字符串的情况下。他才会比较ASCii码,要只是一边是数值,他比较另外一边,把另外一边转成数值.

(二)相等操作符

相等和不相等-先转换再比较
全等和不全等-仅比较而不转换

相等和不相等

  1. 在JS里面由两个等号(==)表示,表示要是两个操作数相等,则返回true
  2. 而不相等操作符由叹号(!=)表示,表示两个操作数要是不相等,则返回true
    这两个操作符都会先转换操作数(强制转换),然后在比较
    在转换不同的数据类型的时候,相等和不等操作符遵循下面的规则:
  • 如果一个操作数是布尔值,则比较相等之前先将其转换为数值。--false转为0,而true转为1
  • 如果一个操作数是字符串,另一个操作数是数值,则比较相当以前先将字符串变成数值
  • 如果一个操作数是对象,另一个操作数不是,则调用valueof()方法,用得到的基本类型按照前面的规则比较
  • null和undefined是相等的.
  • 要比较相等性之前,不能将null和undefined转换为其他值
  • 如果一个操作数要是NaN 则相等操作符返回false,而不相等操作符返回true即使两个数都是NaN,相等操作符也返回false!NaN和任何都不相等,包括它本身,
  • 如果两个操作数是对象,比较他们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true,否则返回false(对象看地址)
    举例:

null == undefined true
"NaN" == NaN false
5 == NaN false
NaN == NaN false
NaN != NaN true
false == 0 true
true == 1 true
undefined == 0 false
null == 0 false
"5" == 5 true

一句话概括就是:相等还是不等,在判断前左右两边都必须执行了Number()操作,然后变成了数值之后在操作


全等和不全等

全等由3个等于号(===)表示,它表示两个操作数未经转换就相等的情况下才返回true
例如:

var result = ("55"==55) ; //true
var result2 = ("55"===55); //false

在这个例子中,第一个比较用的是相等操作符比较字符串"55"和数值55;结果返回了true,因为他会先执行转换,而全等他不会执行转换。他会直接判断。所以是false

条件操作符

这里我们又管他叫做3元一次操作符
var result = boolean_expression?true_value:false_value;
这行代码的意思就是问号前面要是真的,他就返回的true_value,要是false就返回false_value
例如:

var max = (num1>num2)?num1:num2;
只有当num1>num2的情况下为真,才返回num1,要是假则返回num2


赋值操作符

简答的操作符由(=)表示,其作用就是把右侧的值赋值给左侧的变量
例如

var num = 10;

如果在等号(=)前面再添加乘性操作符,加性操作符,或位运算符等等,就可以完成复合运算操作.
例如:

var num = 10;
num += 10; 等价于 num = num +10;
每个主要运算符都有对应的操作符:

  • 乘性(=) : a=b 等价于a = a*b;
  • 除/赋值(/=) : a/=b 等价于a=a/b ;
  • 模/赋值(%=) : a%=b 等价于 a =a %b;
  • 加/赋值(+=) : a+=b 等于于 a = a + b ;
  • 减/赋值(-=) : a-=b 等价于 a = a - b;
  • 左移/赋值(<<=)
  • 有符号右移/赋值(>>=)
  • 无符号右移/赋值(>>>=)

逗号操作符

使用逗号操作符可以在一条语句中,执行多个操作,但是个人不建议
例如:

var num = 1 ,num = 2, num =3;


最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容