2019-08-02ECMAScript 运算符(二)

位运算符

  • |
  • &

运算规律

  • l运算符:两个位只要有一个为1,那么结果都为1。否则就为0
  • &运算符:两个数值的个位分别相与,同时为1才得1,只要一个为0就为0。

关系运算符

运算数:两个
比较两个运算数之间的大小关系,如果关系成立就返回true,关系不成立就返回false

  • >
  • <
  • >=
  • <=

运算规则:

  • 对于Number类型的,正常运算就行
  • 任何值和 NaN 做任何比较 ,返回的结果都是 false
  • 如果两个操作数都是字符串,则会变成比较字符的字符编码——Unicode表
  • 不是Number类型的运算数,先转换为Number类型。
  • 比较字符编码时是一位一位进行比较,如果两位一样再比较下一位(可以借用这一特性对英文姓名排序)
图片.png

如果比较的是两个字符串类型的数字,可能得到的结果不是预期的,可以手动转型。
尤其是在电商网站中,购物车那一块涉及到很多数字的比较,比如购物车最大数,商品库存量


通过一元运算符+转换数据类型

等性运算符

比较两个值是否相等,相等返回true,不等返回false
操作数:两个

  • !=:不等
  • ==:相等
  • ===:全等
  • !==:不全等

运算规则:

  • ==,!=运算符如果两个操作数类型不一样,会先进行类型转换,再比较;不一定转换为Number
  • NaN不跟任何值相等,包括他本身
  • undefined派生自null ,null 和 undefined 相等,但是不全等。
  • === 如果数据类型不一样的话,返回false

思考:NaN不等于NaN,那么,我们怎么判断一个变量值为NaN呢?
答:isNaN()函数

条件运算符

三元运算符
运算数:3个
语句结构:条件表达式?语句1:语句2
执行流程:首先,对条件表达式进行求值,为true执行语句1,返回执行结果,为fasle执行语句2并返回执行结果。

   var max = a > b ? a : b;

赋值运算符

  • = :可以将右侧的值赋给左侧的变量
  • += :a = a + 5 等价于 a += 5
  • -=
  • *=
  • /=
  • %=

逗号运算符

作用:使用,可以分割多个语句,一般可以在声明多个变量的时候使用。

var a=1,b,c;

运算符中的优先级

就和数学中的运算符一样,JS中的运算符也有优先级。
总的规则:先算优先级高的,如果优先级一样就从左往右计算。
如果不清楚优先级,可以使用括号来改变优先级


越在上面的,优先级越高

你可能感兴趣的:(2019-08-02ECMAScript 运算符(二))