Javascript运算符和表达式

运算符:用于执行程序代码运算的符号
表达式:由操作数和运算符组成

一、算术表达式

1. 算术运算符
意义 运算符
+
-
*
/
取余 %
2. 相关说明
  • 加减的符号和数学一致,乘法是*号,除法是/号
  • 默认情况,乘除法的优先级要高于加法和减法;必要时可以使用圆括号来改变运算的顺序
    1 + 2 * 3; // 7
    (1 + 2) * 3; // 9
    1 + 2 / 4; // 1.5
    ((1 + 2) * 3 + 4) / 2; // 6.5
    
  • 加号有“加法”和“连字符”两种作用,如果加号两边的操作数都是数字,则为“加法”,否则为连字符
  • 取余运算也叫作“求模运算”,用百分号“%”表示
    11 % 4; //3,因为11除以4余数是3
    20 % 6; //2,因为20除以6余数是2
    12 % 3; //0,因为能够整除,余数是0
    9 % 3; //0,因为能够整除,余数是0
    3 % 9; //3,因为商0,余数是3
    
  • 隐式类型转换:如果参与参与数学运算的某操作数不是数字型,那么JavaScript会自动将此操作数转换为数字型,隐式转换的本质是内部调用Number()函数
    3 * '4' //12
    true + true //2
    false + 2 //2
    3 * '2天' //NaN
    
  • JavaScript使用了IEEE754二进制浮点数算术标准,这会使一些个别的小数运算产生“丢失精度”问题,在进行小数运算时,要调用数字的toFixed()方法 保留指定的小数位数
    0.1 + 0.2 // 0.30000000000000004
    
  • Math对象的使用:
    • ceil:向上取整
      Math.ceil(2.4) // 3
      Math.ceil(-2.4) // -2
      Math.ceil(2) // 2
      
    • floor:向下取整
      Math.floor(2.4) // 3
      Math.floor(-2.4) // -2
      Math.floor(2) // 2
      
    • pow:幂计算
      Math.pow(2, 3) // 8
      Math.pow(3, 2) // 9
      
    • sqrt:开根号
      Math.sqrt(81) // 9
      Math.sqrt(-81) // NaN
      
    • random:0-1的随机小数
      // 取a-b之间的随机整数:
      parseInt(Math.random() * (b - a + 1)) + a
      
3. 优先级:先乘除,后加减

二、关系表达式

1. 关系运算符
意义 运算符
大于 >
小于 <
大于等于 >=
小于等于 <=
等于 ==
不等于 !=
全等于 ===
不全等于 !==
2. 相关说明
  • 大于>、小于<两个符号和数学相同
  • 大于等于”运算符是>=,“小于等于”运算符是<=
  • 如果想比较两个值是否相等,此时应该使用==运算符
  • JavaScript =中等号 表示赋值,而并不是相等。判断相等应该使用==运算符
  • 两个等号==运算符不比较值的类型,它会进行隐式转换后比较值是否相等
  • 三个等号===运算符,不仅比较值是否相同,也比较类型是否相同
  • !=表示不相等,!==表示不全等
    5 != 6    // true
    5 !== 6   // true
    5 != '5'  // false
    5 !== '5' // true
    
  • NaN不自等
    NaN == NaN  // false
    NaN === NaN // false
    
3. 如何判断某变量值为NaN

isNaN()函数可以用来判断变量值是否为NaN

isNaN(undefined) // true
isNaN('3天') // true
isNaN(null) // false

三、逻辑表达式

1. 逻辑运算符
意义 运算符
!
&&
||
2. 相关说明
  • !表示“非”,也可以称为“置反运算”
  • !是一个“单目运算符”,只需要一个操作数
  • 置反运算的结果一定是布尔值
    !true // false
    !false // true
    !!true // true
    !0 // true
    !undefined // true
    !'' // true
    !'abc' // false
    !!0 // false
    !!'' // false
    !!'abc' // true
    
  • &&表示“并且”,称为“与运算”,口诀:都真才真
    true && true   // true
    true && false  // false
    false && true  // false
    false && false // false
    
  • ||表示“或者”,称为“或运算”,口诀:有真就真
    true || true   // true
    true || false  // true
    false || true  // true
    false || false // false
    
  • 短路计算(a && b):a真,表达式值为b;a假,表达式值为a
    3 && 6           // 6
    undefined && 15  // undefined
    15 && undefined  // undefined
    null && 2        // null
    '' && 16         // ''
    NaN && undefined // NaN
    
  • 短路计算(a && b):a真,表达式值为a;a假,表达式值为b
    3 || 6            // 3
    0 || 6            // 6
    null || undefined // undefined
    'a' || 'b'        // 'a'
    NaN || null       // null
    
3. 优先级:非 → 与 → 或
!true || true     // true
3 && 4 || 5 && 6  // 4

四、赋值表达式

1. 赋值运算符
意义 运算符
赋值 =
快捷赋值 +=
-=
*=
/=
%=
自增运算 ++
自减运算 --
2. 相关说明
  • 赋值运算也产生值,等号后面的值将作为“赋值运算的值”
    var a;
    console.log(a = 4); // 4
    var a, b, c;
    a = b = c = 15;
    console.log(a); // 15
    console.log(b); // 15
    console.log(c); // 15
    
  • 快捷赋值运算符表示在原数值基础上进一步进行运算
    var a = 3;
    a += 5;           // 等价于a = a + 5
    console.log(a);   // 8
    var b = 14;
    b /= 2;           // 等价于b = b / 2
    console.log(b);   // 7
    
  • ++和--是自增/自减运算符,表示在自身基础上加1或减1
    var a = 3;
    a++;
    console.log(a);
    
  • a++和++a的区别:a++先用再加;++a先加再用 ```javascript var a = 3; var b = a++; console.log(b); // 3 console.log(a); // 4

var a = 3; var b = ++a ; console.log(b); // 4 console.log(a); // 4


### 五、综合表达式
##### 1. 优先级:非运算 → 数学运算 → 关系运算 → 逻辑运算
```javascript
5 < 3 + 3             // true
3 > 2 && 8 > 3 + 4    // true
3 > 2 && 8 > 3 + 5    // false
!13 < 5 - 3           // true
!13 < 5 - 5           // false
2. 变量的范围表示
// 验证变量a是否介于5到12之间
a >= 5 && a <= 12

六. 练习:闰年判断1892 1896 1900 1904年(符合以下条件之一即可)

  • 能被4整除且不能被100整除
  • 能被100整除也能被400整除
// 要让用户先输入一个年份
var year = Number(prompt('请输入年份'));

// 根据两个条件进行判断(满足这两个条件中的一个,就是闰年):
// ① 能被4整除,且不能被100整除
// ② 能被100整除,且能被400整除

alert((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0));
Copyright © 高笑石 (2021 - present) all right reserved,powered by Gitbook文件修订时间: 2023-04-21 12:27:35

results matching ""

    No results matching ""