1.3 运算符与表达式

1.3.1算术运算符      NaN与任何数字做运算结果都是NaN

+ - * / %(取模) ++  --

+ 号两侧都是数字,则相加

+号有一侧/两侧是字符串类型或者引用值时,其作用是字符串拼接 

加法规则:  1.先把非字符串的转换成字符串

2.转换的字符串和另外一个字符串拼接

 

 

减号/乘号/除号/取模两侧都是数字类型  作用:求两个数字的差/积/商/取模

会进行隐式转换

true-false   --> 1

2-[3] -->  2-'3' -->  2-3  --> -1   隐式转换为Number类型

2/ [1] --->2/1  --->  2

2/[1,2] --->2/NaN  ---> NaN

[1,2]偷偷转换为”1,2” ,字符串1,2变成数字就是NaN

除了加号之外的运算符,作用只有一个,即只能做对应的数学运算

 

1.3.2 一元运算符只有一个操作数的运算符

如果操作的是非数字类型 则会隐式转换成数字类型,一元运算符比二元运算符的优先级高

+ 对数字取正 +1==>1              

  - 对数字取负 -1==>-1

例子:

+false  -->  +0  --> 0

+[1,23] --> +NaN  --> NaN

-true+false -1+0 --> -1

+null+function(){} 一元运算符和算术运算符 谁先算?

猜测 先算一元运算符

1. 0+function(){}

2. 0+'function(){}'

3. '0function(){}'

结论:一元运算符 的优先级高于 算术运算符

 

1.3.3 自增自减运算符

a++:,a自增1,后,原来a的值保持不变,循环一次后再变化

++a:先自己自增,原来a的值变了自增的值 

 

1.3.4比较运算符     NaN跟任何数做比较都是false

比较运算符有:<  >  <=  >=  ==  ===  !=  !==(不绝对等于)

判断两个数据是否相等 相等则结果是true 反之是false

结论:

1. == 两侧都是原始值(null undefined)时 会把==两侧的数据转换成数字进行比较,字符串和字符串比较时,会按照字符串对应的unicode编码值比较

2.null和undefined 在 == 判断时 总是false

特例 null==undefined --> true

null==null --> true

undefined==undefined --> true

NaN==NaN --> false

3. ==两侧有一侧是引用值时 会把==两侧的数据转换成字符串进行比较

4. ==两侧都是引用值时 直接返回false

!= 判断两个数据是否不相等 不相等则结果是true 反之是false

=== 判断两个数据是否全等 全等则结果是true 反之是false

结论 数据类型不一致 直接是false

!== 判断两个数据是否不全等 不相等则结果是true 反之是false

 

1.3.5 逻辑运算符

&&(与)对两侧的布尔值进行与运算,作用是找到两侧布尔值中的假值

 

||(或) 对两侧的布尔值进行或运算,作用是找到两侧布尔值中的真值

 

!(非) 取反

 

&&优先级大于||

例子:1||2 --->1  0||function(){} ---> f(){}  1||{} ---> 1   2||{}  --->2

   [1,3]&&NaN&&typeof null

从左到右 开始找假 [1,3] 转换为布尔值,只有0 NaN undefind null false “”才是false,所以是真,就不找,NAN--->0 ,false 然后停,输出

  true&&[1,3] --> [1,3]

  [1,3]&&typeof null --> 'object'

  [1,3]&&NaN&&typeof null --> NaN

  false||’heaven’ --> 'heaven'

  null||typeof undefined --> 'undefined'

  null||typeof undefined|| typeof typeof undefined -->'undefined'

  (!!''+!!" "-!!false)&&null

  1.  (false+true-false)&&null

  2.  (0+1-0)&&null

  3.  1&&null

  4.  null

  (!!''+!!" "-!!false)||[1,2]&&null

  1.  1||[1,2]&&null

  2.  1||null

  3.  1

运算符的优先级  https://blog.csdn.net/jianleking/article/details/78017221

 

 

 

 

 

posted @ 2019-06-04 10:26  小小oRa  阅读(191)  评论(0编辑  收藏  举报