javaScript的操作符分类
javaScript中的操作符是根据ECMAScript中的规范进行使用的,并且也是独特的,因为他们可以用于各种数值类型,甚至可以给对象使用,但是在对对象使用操作符的时候,往往会调用valualOf()和/或toString方法来取得可以计算的值。这就是javaScript是弱类型语言的一个原因。
1)一元操作符
一元操作符顾名思义,就是对一个值的操作,在js中也叫递增++和递减--操作符,那么一元操作符也分为前缀和后缀,前缀就是先递增或递减再进行运算,后缀就是先用原来的值运算完结束后,再递增或递减,比如:
<script>
var b = 1;
var c = ++b; //先对b进行递增后在赋值给c
console.log(c); //2
console.log(b); //2
var d = 2;
var e = d++; //先用d原来的值2进行赋值后再进行递增
console.log(e); //2
console.log(d); //3
</script>
前缀因为变量在语句被求值之前被改变,所以在计算机科学中,这通常被称为具有副作用。
前缀递增和递减在语句中的优先级是一致的,因此会从左往右依次求值。比如:
<script>
var a = 1;
var c = 3;
var d = --a + c;
var e = a + c; //现在所用的c是上一步运算完之后的已经递减过的a
console.log(d); //3
console.log(e); //3
</script>
注意:这四个操作符可以用作任何值。意思是不限于整数——字符串、布尔值、浮点数、甚至对象都可以,但需遵循如下规则。
1. 对于字符串,如果是有效的数值形式,则转换为数值再应用改变。变量类型从字符串变成数值
2. 对于字符串,如果不是有效的数值形式,则将变量的值设置为NaN(Not a Number),变量类型从字符串变成数值
3. 对于布尔值,如果是false。则转换为0再应用改变。变量类型从布尔值变成数值,若是true则转换为1
4. 对于浮点数,加1或减1
5. 如果是对象,则调用其valueOf()方法取得可以操作的值,再进行上述规则,如果是NaN,则调用toString()并再次应用其他规则,变量类型从对象变成数值
一元加和减
一元加和减操作符对于大多数的开发者来说并不陌生,并且在js中只是其基本运算功能上多了一个功能,数据类型转换比如:
<script>
let s1 = "01";
let s2 = "1.1";
let b = false;
s1 = -s1; //值变成-1,从字符串类型转变为数值类型
s2 = -s2; //值变成-1.1
b = -b; //值变成0,从布尔值变成数值
</script>
2)位操作符
关于位操作符,我们得先了解ECMAScript标准中的数值都是以IEEE 754 64位格式存储,但位操作并不直接应用到64位表示,而是先把值转换为32位再进行位操作,之后再把结果转换为64位,所以,对于开发者而言,就只需要考虑32位整数即可