(一)数学运算符
1、加减乘除
var a = 100,b = 200
console.log(a+b) //300
console.log(a-b) //-100
console.log(a*b) //20000
console.log(a/b) //0.5
2、取余%
var a = 100
console.log(a%3) // 1
3、说明
(1)在number 和 boolean类型相加时,会自动将 true 转化为1;
(2)若是 number 和 string相加,则变成了字符串拼接,而* / -均变为number;
4、优先级问题
进行运算时,要注意运算的优先级,稍有不慎,可能会出现意想不到的结果。
console.log(1+"2"*3+4) //11 Number
console.log("1"+2*3+4) //164 String
在以上运算中,前者先进行乘法运算,将数据类型转化为了Number,之后全是Number的相加,结果为正常的理想数据。
后者在加法中混入了字符串,因此“+”变成了字符串拼接。
(二)赋值运算符
1、简单赋值
var a = 1
console.log(a) //1
2、自运算
(1)自加 +=
var a = 1
a += 3
console.log(a) //4
(2)自减 -=
var a = 2
a -= 1
console.log(a) //1
(3)自乘 *=
var a = 2
a *= 3
console.log(a) //6
(4)自除 /=
var a = 6
a /= 2
console.log(a) // 3
(5)++与--
若自加/自减 1,也可以使用++ / --
var a = 2
a++
console.log(a) // 2
a--
console.log(a) //1
3、i++ 与 ++i
当 i++ 与 ++i 单独一行执行时,i++与++i并无差别;
当 i++ 与 ++i 与其他语句写在一行时,两者有差别。
(1) i++ 或 ++i 单独一行执行时
var a = 10
a++
document.write(a) // 11
++a
document.write(a) // 12
(2)两者和其他语句同写在一行上出结果时,差别如下
若为 i++,则先执行完整行语句,再相加;
若为 ++i,则先相加,再执行完整行语句。
var a = 10
document.write(a++) // 10 打印完才执行
document.write(++a) // 12 有一个1是上一句执行完+1的结果
(3)综合运用
在简单语句中,比较容易比较 ++i 与 i++的区别,但是在复杂语句中,稍有不慎,就容易犯错。
var a = 10
var b = ++a + a++ + ++a
console.log(b) // 35
运算过程:
++a => 10+1=11
a++ => 加的时候是11,执行完加法才变成12
++a => 12+1=13
总的:11+12+13=35
(三)比较运算符
1、相等和严格相等
“==”只比较是否相等,不比较数据类型;
“===”不仅比较是否相等,还比较数据类型是否一致
(1)相等 ==
var a = "100"
console.log(a == 100) //true
“==”同样可以对所有数据类型的值对应的布尔值进行判断。
console.log(true == 1) //true
console.log(false == "") //true
(2)严格相等 ===
var a = "100"
console.log(a===100) //false
由于数据类型不同,不能用“===”判断数据对应的布尔值
console.log(true === 1) //false
console.log(false === "") //false
2、不相等和严格不相等
与“==”和“===”对应
“!=”只比较是否相等,不比较数据类型;
“!==”不仅比较是否相等,还比较数据类型是否一致
(1)不相等
var a = "100"
console.log(a != 100) //false
(2)严格不相等
var a = "100"
console.log(a !== 100) //true
(四)逻辑运算符
1、与&&,全部为true才为true
console.log(true && true) //true
console.log(true && false) //false
var a = 100
var b = "test"
console.log(a==100 && b=="test") //true
2、或||,只要包含一个true就是true
console.log(true || false) //true
console.log(false || false) //false
var a = 100
var b = "test"
console.log(a == 90 || b == "test") //true
3、非!
var test = null
console.log(test == 0) //true
console.log(!test == 1) //true
(五)三元运算符
三元运算符又称为“三目运算符”和“条件运算符”,主要的作用是:用于判断,可理解为简单运算版本的if
格式:判断语句 ? 正确时执行 : 错误时执行
10 < 20 ? console.log("正确") : console.log("错误")
三目运算符可嵌套,但是会提高代码复杂性,不易读,建议复杂判断使用if语句。
var a = 99
var res = a > 200 ? a++ : (a > 100 ? a++ : a--)
console.log(a) //98