JS-运算操作符

206 阅读3分钟

一、算术运算符

+ - * / %

  • +:加号,作用是用数字运算和字符串连接

    var a=1+2;打印 a 得 3,
    var a=“a”+“b”;打印 a 得到 ab,
    var a=1+“a”;打印 a 得到 1a,
    var a=“a”+1+1;打印 a 得到 a11,

  • -:减号,求差
  • *:求积
  • /:求商
  • %:取模(取余数)
    • 开发中经常作为某个数字是否被整除

    var a=5%2;打印 a 得到 1
    var a=10%4;打印 a 得到 2
    var a=5%1;打印 a 得到 0
    var a=4%6;打印 a 得到 4

注意:

  1. (+加号):任何数字类型加字符串都等于字符串
  2. (/除号):let a = 0/0; a = NaN NaN 属于数字类型,但是又得不出一个具体的数, 则得到 NaN
  3. 计算顺序:先乘除后加减,有括号先算括号里面的

二、赋值运算符

  • =
  • +=
  • -=
  • *=
  • /=
  • %=
  • **=
  • ^=

三、一元运算符

  • 自增 num++、++num
    • 前置自增:++num
    • 后置自增:num++
  • 自减 num-- 、--num
    • 前置自减:--num
    • 后置自减:num--

前置自增和后置自增的区别:

前置自增: 先加1后运算---(先自增, 再运算)
后置自增: 先运算后加1---(先运算, 再自增)

经典案例:

<!--用来理解-->
let num2 = 10;
console.log(++num2);  // 11
console.log(num2++);  // 11
console.log(num2);  // 12

<!--面试题-->
let i = 1;
console.log(i++ + ++i +i) // 7

使用场景:

经常用于计数来使用,用来计算多少次。
开发中,我们一般都是单独使用的,后置++ 使用更多

四、比较运算符

  • >: 左边是否大于右边
  • <: 左边是否小于右边
  • >=: 左边是否大于或等于右边
  • <=: 左边是否小于或等于右边
  • ==: 左右两边是否相等,将两边的数据进行转换为数值
  • ===: 左右两边是否类型和值都相等
  • !=: 不等于
  • !==: 完全不等于
  • 比较结果为boolean类型,即只会得到true或false

注意点:

  1. 字符串比较,是比较的字符对应的ASCII码
  2. NaN不等于任何值,包括它本身
  3. 尽量不要比较小数,因为小数有精度问题
  4. 不同类型之间比较会发生隐式转换
// 字符串的比较是比较 ASCII码 的值
console.log('a字符串 > b字符串', 'a' > 'b'); //  false
    
// NaN 的比较: NaN不等于任何值, 包括他本身
console.log('NaN > NaN', NaN > NaN); //  false
    
// 尽量不要比较小数,因为小数有精度问题
console.log('0.1 < 0.2', 0.1 < 0.2); //  false

五、逻辑运算符

  • &&:与

    如果有两个值进行运算,先看第一个表达式的值转化为布尔值是否为真,如果是真,他会把第二个表达式的值返回,如果第一个表达式的值为假。他会直接返回第一个表达式的值,不看后面的;如果有三个或以上多个值,会一个一个判断,如果都为真,则返回最后一个的值,如果遇到假的,则会直接返回这个表达式的值,后边的就不看了(遇假就停)

  • ||:或

    如果||有多个值,他会一个一个判断,如果这些值都为假,则返回最后一个值,如果判断到哪个表达式的值是真的,他就会直接返回这个表达式的值,后边就不看了(遇真就停)。

  • !:非

    !的作用就是把一个值转换为布尔值再取反

必记: undefined、null、NaN、0、“”、false 这些值转换为布尔值是 false(假),其他的值 转化为布尔值都是 true(真)

六、运算符优先级

优先级运算符顺序
1小括号()
2一元运算符++ -- !
3算术运算符先* / % 后 + -
4比较运算符> >= < <=
5相等运算符== != === !==
6逻辑运算符先 && 后
7赋值运算符=
8逗号运算符,

总结: 口诀(计算比较判断逻辑)