运算符中的一些小技巧

331 查看

– 记下一些关于运算符的小技巧或容易出错的地方

 %运算符

取余运算符运算结果的正负号由第一个运算子的正负号决定,比如:

所以有时候对负数取余会出现错误,使用绝对值函数可以避免错误:

 +运算符

+运算符与其他运算符不太一样,我们知道它可以用来连接字符串操作,是因为用+运算符的时候它通常会将其他类型的值转为字符串,但是除了它比如说-运算符等都会将其他类型的值转换为数值,像这样:

当运算子中出现对象的时候:

则先调用该对象的valueOf方法。如果返回结果为原始类型的值,则转换为字符串;否则继续调用该对象的toString方法,然后转换为字符串。
但是:

这是为什么呢?此时{a:1}被当做了代码块处理,而这个代码块没有返回值,所以整个表达式就返回1了。但是放在了圆括号中的{a:1},因为js预期()中是一个值,所以它就又被当做对象处理了。

**特殊表达式:**

1. 空数组+空数组

先调用valueOf()返回空数组本身,再调用toString(),返回空字符串。

2. 空数组+空对象

[]得到”,{}得到”[object Object]”

3. 空对象+空数组

{}被视作代码块省略,+[]就是将[]转换为数值的意思了得到0.

4. 空对象+空对象

同样{}被当做代码块省略了,+{}转数值得到NaN