·JavaScript运算符
一、运算符分类
1.数学运算符(Arithmetic operators)
加 + 减 - 乘 * 除 / 取余数 % 括号 ()
计算顺序:先乘除,后加减,遇到括号先计算所有括号内值。
1.1隐式转换
利用不同运算符的特性,从而可以对不同类型的数据进行相互转换
数学运算中,只有纯字符串、布尔值、null能辅助进行隐式转换:
·隐式转换的时候null被转为0,false被转为0,true被转为1。
·不纯的字符串和undefined不能进行隐式转换,结果都是NaN,无法计算。
·加法的特殊性:任何数据类型加字符串都等于字符串,同时加法对于字符串没
有隐式转换,运算时会进行字符串拼接。
注意:undefined参与的运算,结果都是NaN。
1.2特殊数值的计算
2.比较(关系)运算符
比较: > 大于,< 小于,>= 大于等于,<= 小于等于,
== 等于,=== 全等于, != 不等于, !== 不全等于。
关系运算符的结果都是布尔类型,即:true真或false假。
注意:与数字进行比较运算时,纯数字字符串将被转为数字,null转换为0,
true转换转为1, false转换为0。NaN不等于自己,不全等于自己。
3. 逻辑运算符
逻辑: || 逻辑或,&&逻辑与, !(取反)。
(1)a || b 一真即真,两假为假。false通过,true停下来。
(2)a && b 一假即假,两真为真。true通过,false停下来。
(3)!true 取反为 false, !! true结果为 true。
即:奇数个!表示单个取反,偶数个!则抵消不取反。
(4)逻辑运算符的计算顺序:非!,与 && ,或 ||
注意:计算机计算结果判断思路为短路运算,则与&&运算是从左到右判断为真过
假直接取,或 || 运算从左到右判断为假过真直接取。
在JS里进行布尔值转换时,只有0,NaN, " " , null , undefined , false
这6种值可以被转为false,其他值都是true。
4. 赋值运算
赋值:= ,+= , -= , *= , /= , %= 。
注意:赋值运算参与者是变量,且先计算右边,然后将最终的值赋值给左边。
运算符的计算顺序:( ++ -- !) → 数学 → 比较 → 逻辑 → 赋值
后置 ++ 和 -- 跟 前置++和--的区别:后置的是先参与其他运算,后自增或自减,
前置是先自增或自减,后参与其他运算。