运算符

  1. 算术运算符
  2. 关系运算符
  3. 逻辑运算符
  4. 赋值运算符
  5. 自增、自减运算符

    算术运算符

    image.png

  6. 任何类型的数据和字符串类型数据做向相加操作的时候,其他数据类型自动转换成字符串类型。字符串拼接。此时的相加操作不在是数学意义上加法,而是表示拼接的方法。

<1>如果其中一个操作数字符串的时候,+号就叫做字符串拼接符

  1. 任何数据除了和字符串相加运算外,先要将字符串转成数字再进行运算

<1> 与NaN做算数运算符的结果始终是NaN,包括NaN本身和NaN做运算结果也为NaN
<2> 字符串如果是纯数字字符串的转成数字,否则转换成NaN

表达式和赋值运算符

表达式

  1. 概念:运算符和操作数组成的式子,叫做表达式

(1):看表达式:

  1. 功能
  2. 表达式值

    强制数据类型转换

    一:通过方法boolean()进行强制数据类型转换。作用:将别的数据强制转换成布尔值
    结论:

  3. 数字0转成布尔值为false,所有非0的数字转成布尔值都为true

  4. 空字符串转成布尔值为false,所有非空字符串转城布尔值都为true
  5. null 和undefined转城布尔值都是false

    1. var tmp = Boolean(1);
    2. console.log(tmp);//结果为true

    二:转换成数字类型:

  6. Number():将别的数据类型转成数字

    1. 布尔值true =>1, false => 0
    2. 字符串 纯数字的字符串 => 对应的数字,否则NaN
    3. 特殊数据类型 null =>0 ,undefined =>NaN
  7. parseInt()兼容Number()的功能 取整
  8. parseFloat()取浮点数 带小数的数字 可以将别的数据类型转换成数字

    1. var tmp = 1 / 0;//Infinity 无穷大
    2. var tmp = -1 / 0;//-Infinity 负无穷大
    3. console.log(tmp);

    一元运算符

  9. 只能操作一个值的运算符,叫做一元运算符

    1. a++; //参与运算之后自加1
    2. ++a;//参与运算之前自加1

上述的两个表达式都是进行+1操作

  1. a—;//参与运算之后自减1
  2. —a;//参与运算之前自减1

    关系运算符

    image.png
  1. 关系运算符操作数为非数字的时候要遵从以下规律:
    1. 如果两个操作数都是数值,则数值比较
    2. 如果两个操作数都是字符串,则比较两个字符串对应的字符编码值/ASCII码表值(逐位比较,直到比较出大小,终止比较。)
    3. 两个操作数有一个是数值,则将另一个转换成数值,再进行数值比较
  2. 在等于和不等于的比较上,如果操作数为非数值,则遵从以下规律:

    1. 一个操作数为布尔值,则比较比较之前将其转换成数值,false转换成0,true转换成1
    2. 如果其中一个操作数为字符串,则比较之前将其转换成数值再进行比较
    3. 一个操作数为NaN,则==返回true,!=返回false,并且NaN和NaN本身不等
    4. 在全等和全不等(恒等于),如果这个值和类型都相等,才返回true ,否则返回false(=== !==)

      逻辑运算符

  3. 与 表达式1 && 表达式2(只有当两个表达式的结果同时为真时,与运算的结果才为真)【当第一个表达式为false,整个表达式都为false】

  4. 或 表达式 | | 表达式2 (只有当两个表达式的结果同时为假时,或运算的结果才为假)【当表达式为true时,整个表达式都为true】
  5. 非 !表达式
    1. 逻辑非遵从下列以下规律:

image.png
image.png

三目运算符

格式:
表达式1 ? 表达式2 : 表达式3
【执行过程】先求解表达式1,若结果为1(true),则求解表达式2,若表达式1结果为0(false),则求解表达式3

  1. var grade = parseInt(prompt("请输入学生的成绩[0-100]:"));;
  2. while(!(grade>=0&&grade<=100)){
  3. alert("请正确输入学生的成绩[0-100]");
  4. grade = parseInt(prompt("请输入学生的成绩[0-100]:"));
  5. }
  6. grade>=90&&grade<=100? alert("A") :
  7. grade>=80&&grade<90? alert("B") :
  8. grade>=70&&grade<80? alert("C") :
  9. grade>=60&&grade<70? alert("D") :
  10. alert("不及格!");

运算符优先级

image.png