javaScript 运算符(操作符)

类别

操作符

 
算术操作符 +、 –、 *、 /、 %(取模)  
字符串操作符 + 字符串连接   +=字符串连接复合  
布尔操作符 !、 &&、  ||   
一元操作符 ++ 、 -- 、  +(一元加)、    -(一元减)  
关系比较操作符 < 、 <= 、 >  、>=、   !=  、 == 、  === 、  !==   
按位操作符 ~ 按位非    &按位与     | 按位或     ^按位异或    <<左移    >>有符号右移      >>>无符号右移  
赋值操作符 = 、   复合赋值(+=、-=、*=、%=)   复合按位赋值(~=、&=、|=、^=、<<=、>>=、>>>=)  
对象操作符 .属性访问、[]属性或数组访问、 new调用构造函数常见对象、delete变量属性删除、void(返回undefined)、in判断属性、instanceof原型判断  
其它操作符 ?: 条件操作符、,逗号操作符、()分组操作、typeof类型操作符  

一个表达式叫操作,两个及以上叫运算。

JavaScript中的大多数运算符是一个二元运算符(binary operator),将两个表达式合并成为一个稍复杂的表达式。譬如a*b中的乘法运算符*,就是一个二元运算符。表达式-x中的-运算符就是一个一元运算符,是将操作数x求负值。最后,JavaScript支持一个三元运算符(ternary operator),条件判断运算符?:,它将三个表达式合并成一个表达式。

这次想写下一元操作符 + -

上题 :

a = 1
'a' + + 'b'
a +++ a
a ++ + ++ a

a ++ 'b' ==>a + +'b';+'b' 会进行一元加操作相当于 Number('b'),将表达式转换成数字。即 aNaN)(要注意+ +中间空格)

a +++ a==>a++ + a; ,++一元操作符优先级高于算数操作符 + ,a++运算之后加1,所以当前a为1,后一个a为2。即 3

a ++ + ++ a==>和上一个相似。结果为6

这里想弄明白原因必须要知道优先级、结合性、运算顺序

优先级:属性访问 > 一元操作符 > 乘除 > 加减 > 比较 > 相等 > 与运算 > 或运算 > 三目运算 > 赋值运算>逗号(不参与运算)

结合性(左、右结合):一行代码中存在多个运算符,且这些运算符的优先级相等。所有一元操作符、三目运算符和赋值运算符都是右结合,其他的操作符都是左结合

x = a ? b : c ? d : e ? f : g;==> x = a ? b : (c ? d : (e ? f : g));

运算顺序:表达式里还包含表达式从左向右运行。例如 a +++ a ==》((a++) + a )

注意:++ 和 + + 区别很大;连续 + 不能超过3个;++不能操作数字;数字 + NaN = NaN

posted @ 2020-11-05 13:37  HappyHacking!  阅读(185)  评论(0编辑  收藏  举报