JavaScripte运算符与优先级简述

2020-03-14  本文已影响0人  Long_Dark

什么是JavaScript

JavaScript中运算符主要用于连接简单表达式,组成一个复杂的表达式
一些运算符可以作用于任何数据类型typeof,但大部分操作符希望操作数是特定的类型,而且大部分操作符会计算出(我们也常说返回)一个特定类型的值(typeof返回的全是string

有些操作符对不同的数据类型有不同的含义,比如 +

JavaScript运算符有哪些种类

算数运算符

最基础用来计算的运算符号,也是我们最熟悉的

赋值运算符

赋值运算符用于给变量赋值,最常见的赋值运算符,当然就是等号,表达式x=y表示将y赋值给x。除此之外,JavaScript还提供其他11个赋值运算符

比较运算符

比较运算符比较两个值,然后返回一个布尔值,表示是否满足比较条件。JavaScript提供了8个比较运算符。

布尔运算符

位运算符

运算符优先级与结合性

优先级指的就是在多个运算符的情况下先使用哪个运算符生成一个表达式,跟我们数学的优先级类似。结合性是指多个具有同样优先级的运算符表达式中的运算顺序
有的运算符是左结合的,即运算从左到右执行

w = x + y + z;
w = (x + y) + z;

有的运算符是右结合的

w = x = y = z;
w = (x = (y = z));

具体运算符的优先级可以参考:
MDN 参考

有几个需要注意的地方

  1. typeof的优先级相当的高,比加减乘除神马的都高,所以虽然是操作符,在在复杂表达式的时候我们还是习惯加括号,看个例子

     typeof 2*3;//NaN
     typeof (2*3);//"number"
     typeof 2+3;// "number3"
    
    
  2. ++--是右结合的操作符(优先级最高的几个都是右结合),而且比加减乘除优先级高。同时自增、自减运算符的运算数得是左值(可以放在赋值符号左边的值),而不能是常数

     4++; 
     var a=0,b=0;
     a+++b;//0
     a;//1,++优先级比+高,所以相当于(a++)+b
     b;//0
    
    
  3. 赋值运算符的优先级相当的低

     a = b == c; //等同于a = (b==c)
    
    
  4. 逻辑非!也在优先级队列的前端,比加减乘除高,但逻辑与、逻辑或优先级很低,不如加减乘除

     !2*0; //0, 等价于(!2)*0
    
    
  5. 一个关于逻辑运算符的有意思地方是其“短路”功能,当左侧为true时,才会计算右操作数的值并且返回,如果左操作数本身值就为false,那么会直接返回左操作数的值,而且 与 的优先级大于 或

     1 && 3;//
     1 && "foo" || 0;//
     1 || "foo" && 0
    
    
上一篇 下一篇

猜你喜欢

热点阅读