JS基础-运算符

82 阅读2分钟

js按使用场景的不同将运算符分成了很多种类型:算术运算符、赋值运算符、关系(比较)运算符、逻辑运算符

算术运算符

image.png

var result = 2 ** 3 // 2的3次方

赋值运算符

= 被称之为 赋值( assignments )运算符, 语句 x = value 将值 value 写入 x 然后返回 x

// 链式赋值:从右到左进行计算
var num1 = num2 = num3 = 22
console.log(num1,num2,num3) // 22 22 22

原地修改

//  原地修改:要对一个变量做运算,并将新的结果存储在同一个变量中
var num = 10
num = num + 10 // num = 20

num += 10 // num = 20
num *= 10 // num = 100

image.png

自增、自减

自增/自减只能应用于变量。将其应用于数值(比如 5++)则会报错。

// 自己自增和自减是没有区别的
// 自增
var num = 2
num ++ // num = 3
// 自减
var num2 = 3
num2 -- // num = 2

var num3 = 9
--num3 // num3 = 8

//自增和自减表达式本身又在其他的表达式中,就有区别
var number = 3
var result1 = 10 + number++ // 先赋值再自增:result1 = 13
/*
建议这样写
var result = 10 + number
number++
*/
var result2 = 10 + ++number // 先自增再赋值:result2 = 14
/*
建议这样写
number++
var result = 10 + number
*/

运算符的优先级

所有运算符的优先级:

developer.mozilla.org/zh-CN/docs/…

比较运算符

image.png

== 和 === 的区别

它不能区分出 0 和 false,或者空字符串和 false这类运算,

// 会进行隐式转换:在类型不相同的情况下,会先转成Number的值,再比较,
console.log('' == 0)  // ''->0  ture
console.log(false == 0) // false->0 ture

// === 在进行比较时不会做任何的类型转换,类型不同直接返回false
console.log(0 === '0') // false

null == undefined // ture
// Object/Null会先转为原始类型,null默认会返回原来的值,
'abc' == Object/Null // false 

var info = {
  name:'www',
  age:18
  [Symbol.toPrimitive]() {
    return 123
  }
}
console.log(123 == info) // ture