算数运算符
- +运算符会由运算子决定它的重载,是连接字符串还是数值相加
- 对象的相加是先执行对象的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);
value