[JavaScript高级程序设计]第3章 基本概念(2)--操作符

目录

操作符

1.一元操作符

1.1 递增递减操作符

1.2 一元加减操作符

2.位操作符

3.布尔操作符

4.乘性操作符

4.1 乘法

4.2 除法

4.3 求模

5.关系操作符

6.相等操作符

6.1 相等(==)和不相等(!=)

6.2 全等(===)和不全等(!==)


操作符

1.一元操作符

1.1 递增递减操作符

递增(++),递减(--)
           还可以应用于字符串,布尔值,浮点数值和对象。先将其转换成数字值,然后在进行加1操作。

1.2 一元加减操作符

在对非数值应用一元加操作符时该操作符会像Number()转型函数一样对这个值进行转换。一元减操作符应用于非数值时遵循与一元加操作符一样的规则,然后再将得到的数值转换成负值。

2.位操作符

  1. 按位非(~) 本质:操作数负值减1
  2. 按位与(&) 对相同位置上的两个数执行AND操作
  3. 按位或(|) 
  4. 按位异或(^)  
  5. 左移(<<)
    左移不影响操作数的符号位,用0填充空位
  6. 右移
    1)有符号右移(>>),用符号位填充空位
    2)无符号右移(>>>),用0填充空位

3.布尔操作符

  1. 逻辑非(!)
  2. 逻辑与(&&)短路操作(false)
    1)如果第一个操作数是对象,则返回第二个操作数
    2)如果第二个操作数是对象,当第一个操作数的求值结果为true的情况下,返回第二个对象
    3)如果两个操作数都是对象,则返回第二个操作数
    4)如果第一个操作数是null,NaN或undefined,则返回null,NaN或undefined
  3. 逻辑或(||)短路操作(true)
    1)如果第一个操作数是对象,则返回第一个操作数
    2)如果第一个操作数的求值结果是false,则返回第二个操作数
    3)如果两个操作数都是对象,则返回第一个操作数
    4)如果两个操作数都是null或NaN或undefined,则返回null或NaN或undefined

4.乘性操作符

3个:乘法,出发和求模。在操作数为非数值的情况下自动进行类型转换。(后台使用Number()转型函数)

4.1 乘法

  1. 操作数是数值,正常运算。若超出最大范围,则返回Infinity或-Infinity
  2. 如果有一个操作数是NaN,则返回NaN
  3. 如果是Infinity与0相乘,则返回NaN
  4. 如果Infinity与非0数值相乘,则返回Infinity或-Infinity,符号取决于非0数
  5. 如果Infinity与Infinity相乘,结果是Infinity
  6. 如果有一个操作数不是数值,则后台调用Number()将其转换成数值,在应用上面规则

4.2 除法

  1. 操作数是数值,正常运算。若超出最大范围,则返回Infinity或-Infinity
  2. 如果有一个操作数是NaN,则返回NaN
  3. 如果是Infinity被Infinity除,则返回NaN
  4. 如果是0被0除,则返回NaN
  5. 如果是非零数被0除,返回Infinity或-Infinity,符号取决于非零数
  6. 如果是Infinity被非零数除,返回Infinity或-Infinity,符号取决于非零数
  7. 如果有一个操作数不是数值,则后台调用Number(),将其转换为数值,再应用上面规则

4.3 求模

  1. 操作数是数值,正常运算。若超出最大范围,返回Infinity或-Infinity
  2. 若被除数是无穷大,除数是有限大,则返回NaN
  3. 若被除数是有限大的数值,二除数是0,则返回NaN
  4. 若Infinity被Infinity除,则返回NaN
  5. 若被除数是有限大,除数是无穷大,则返回被除数
  6. 若被除数是0,则返回0
  7. 若有一个操作数不是数值,则后台调用Number(),将其转换为数值,再应用上面的规则

5.关系操作符

小于<,大于>,小于等于<=,大于等于>=

任何操作数与NaN进行关系比较结果都是false

6.相等操作符

相等和不相等--先转换后比较
全等和不全等--仅比较不转换

6.1 相等(==)和不相等(!=)

基本规则:

  1. 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值
  2. 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值
  3. 如果一个操作数为对象,另一个不是,则调用对象的valueOf()方法,用得到的基本类型按前面的规则进行比较
  4. null和undefined是相等的
  5. 如果有一个操作数是NaN,则相等操作符返回false,不相等操作符返回true
  6. 如果两个操作数都是对象,则比较是否为同一对象

6.2 全等(===)和不全等(!==)

与相等和不相等操作的区别:在比较之前不转换操作数
null===undefined   false

猜你喜欢

转载自blog.csdn.net/Liwen_Ye/article/details/81189186