最详细的JavaScript高级教程(六)操作符

写在前面

我曾经辅导过很多人编程,其中有学霸也有学渣,而编程这个事情,学霸经常会陷入一个 误区:所有的语法都要记住,所有的特性都要了如指掌才算精通。而我们所面对的笔试甚至一些面试也加深了这种印象,事实真的如此么?

对于枯燥的语法知识,我们要知其然,知其所以然,但是不需要死记硬背,我们的大脑善于记住感性的东西,所谓:一朝被蛇咬就是如此,我们讲的一些不常用的特性,大家只需要在大脑中形成这里有坑的印象,用的时候回来再看就是了,记住:书是用来查的,教程也是。

自增自减

自增自减的逻辑与c一致,这里不过多叙述,我们只关注一下不同类型的数据自增自减的情况,这里放一个例子以供查询就好:
在这里插入图片描述

位操作

js中位操作与c中一致,新增了一个无符号的右移,这里我们复习一下即可

  • 按位非 ~
  • 按位与 &
  • 按位或 |
  • 按位异或 ^
  • 左移 << 注意,左移不影响符号位,不会影响数字的正负
  • 有符号右移 >> 这个右移不会影响符号
  • 无符号右移 >>> 这个右移因为标志位一起填0导致负数变正数且因为负数中1很多,导致出来的数字很大

逻辑运算符

与c中一致,需要注意的是与常用于短路操作,或常用于备用值的赋值,复习一下:

  • 与 && 常用于短路操作
  • 或 || 常用于备用值 a = b || c 表示如果b是null则把c赋值给a
  • 非 !
    注意,&&如果两边不是布尔值,会按照下面的逻辑运行:
    在这里插入图片描述
    || 如果两边不是布尔值,按照下面的逻辑
    在这里插入图片描述

乘除操作符

在乘除操作符中,我们需要考虑一下无穷大和NaN的介入,我们记录一下一些特殊的乘除操作结果

  • 乘法 *
    在这里插入图片描述
  • 除法 /
    在这里插入图片描述
    在这里插入图片描述
  • 余数 %
    在这里插入图片描述

加减运算符

加减运算符同样需要考虑无穷大和NaN的介入

  • 加 需要注意的是,加号两边只要有一边是字符串,这个结果将会是字符串连接
    在这里插入图片描述
  • 减法
    在这里插入图片描述
    在这里插入图片描述

关系运算符

关系运算符包括:大于 小于 大于等于 小于等于,在使用这些关系运算符的时候也需要注意相应的特殊类型的取值
在这里插入图片描述
这里我们重点关注一下字符串的比较大小,由于是比较编码值,所以要注意下面几个场景

  • “Ba” < “aL” 由于大写字母的编码都小于小写字母,所以如果想实现字符串的比较,需要先都转化为大写或者小写比较 “BL”.toLowerCase()
  • “23” < “3” 因为比较的时候会先比较第一位,第一位有大小之后后面的就不会比较了
  • “23” < 3 返回false,因为字符串会先转化为数值进行比较
  • “a” < 3 false,因为"a"会转为NaN
  • NaN和任何比较,不管大于还是小于都返回false

相等和全等(重要)

  • 相等:比较对象转化为相近的对象进行比较
  • 全等:不转换光比较

相等的比较遵循下面的原则:

  • 布尔值 true是1 false是0 转化为数值进行比较
  • 一个字符串一个数值比较,把字符串转为数值
  • 对象和别人比较,调用valueOf之后比较

下面的表整理了相等的一些特殊情况,主要是undefined null NaN,我们需要注意的是

  • null == undefined
  • NaN跟谁都不等,包括自己
  • 对象指向一致则相等
    在这里插入图片描述

全等则是先比较类型,再比较值,如果两个类型不同,则直接false

"55" == 55 // true
"55" === 55 // false

需要注意的是,undefined 相等于 null,但是 undefined 不全等于 null

undefined == null // true
undefined === null // false

注意:js中推荐使用全等以避免可能带来的类型转化问题。

冒号表达式

这个就是普通的冒号表达式

var a = (b > c) ? d : e; // 表达式为true返回d 表达式为false返回e

赋值操作

= 为赋值操作符,js支持 += *= 等,但是用这些简化的赋值操作符不会带来任何的性能提升。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章