JavaScript学习(八)运算符

算数运算符

  • +运算符会由运算子决定它的重载,是连接字符串还是数值相加
  • 对象的相加是先执行对象的valueOf方法获取值,如果不是字符串,调用toString转成字符串再相加。(当然,也可以定义自己的valueOf或toString方法返回想要的值)
  • 余数运算符的正负由第一个运算子决定,为了得到正确的余数要先使用绝对值函数
  • *为指数运算符 2 * 4 = 16 指数运算符是右结合的
    *

比较运算符

  • 比较运算符非两种,一种是非相等运算符,包括> < >= <=,另一种是相等运算符,是 == === != !===。
    *非相等运算符对字符串进行比较时,按照字典顺序比较,即依次比较他们的Unicode码点
  • 非相等运算符,比较非字符串时,先转换成数值,再去比较,对象的比较也是先通过valueOf转换,再通过toString转换比较
    *严格相等运算符比较的是两者是否为同一个值,相等运算符比较的是两者值是否相等。相等运算符在比较时会先转换类型再去比较。

布尔运算符

二进制位运算符

  • 二进制或运算符(or):符号为|,表示若两个二进制位都为0,则结果为0,否则为1。
  • 二进制与运算符(and):符号为&,表示若两个二进制位都为1,则结果为1,否则为0。
  • 二进制否运算符(not):符号为~,表示对一个二进制位取反。
  • 异或运算符(xor):符号为^,表示若两个二进制位不相同,则结果为1,否则为0。
  • 左移运算符(left shift):符号为<<。
  • 右移运算符(right shift):符号为>>。
  • 带符号位的右移运算符(zero filled right shift):符号为>>>。
  • 位运算符只对整数有效,非整数会自动转为整数再执行。
  • 此外,JavaScript内部以64位浮点数存储数值,但在位运算时,是以32位带符号的整数进行运算的,返回值也是32位带符号整数。

其他运算符

  • void运算符,执行表达式,不返回任何值
  • ,运算符对两个表达式求值,并返回后一个表达式的值
var value = (console.log('Hi!'), true);
// Hi!
value // true
  • 运算顺序,赋值运算符和三元条件运算符是右结合。

你可能感兴趣的:(JavaScript)