JS操作符有
一元操作符:递增(++)、递减(--);
//一元操作符 特点:只能操作一个值;
/*
递增递减操作符 特点:操作符在前则先计算后使用;操作符在后面则先使用后计算。
*/
var a = 20,
b = 20;
console.log(a++); //20
console.log(a); //21
console.log(++b); //21
console.log(b); //21
var c = 20,
d = 20;
console.log(--c); //19
console.log(c); //19
console.log(d--); //20
console.log(d--); //19
//应用于数字字符串时,先将其转换成数字在执行加减操作
var s1 = "12";
console.log(++s1); //13
console.log(s1); //13
//应用于非数字字符串,结果会变成NaN
var s2 = "b";
console.log(s2++); //NaN
console.log(s2); //NaN
//应用于布尔值时 false等效于0 true等效于1
var boolean1 = false,
boolean2 = true;
console.log(boolean1--); //0
console.log(boolean1); //-1
console.log(boolean2--); //1
console.log(boolean2); //0
//应用于浮点型的值时 会因为四舍五入产生误差
var float1 = 1.1;
console.log(float1--); //1.1
console.log(float1); //0.10000000000000009
//应用于对象时 会先调用对象的Vlueof()方法 如果自己没有重写Valueof方法 那么会返回NaN;
var oo = {
/*valueOf: function() {
return 2;
}*/
};
console.log(--oo); //NaN
console.log(oo); //NaN
位操作符:按位非(~)、按位与(&)、按位或(|)、按位异或(^)、左移(<<)、右移(>>);
/*
负数是以二进制补码的方式存储
求一个二进制的补码 以-18为例
I:先不管符号 先得到该值的绝对值 18 -- 0000 0000 0000 0000 0000 0000 0001 0010
II:按位求反 1111 1111 1111 1111 1111 1111 1110 1101
III:反码加1 1111 1111 1111 1111 1111 1111 1110 1110
*/
/*求反*/
var num = -18; //18的二进制表示形式是 10010
console.log(num.toString(2)); //输出-10010 编译器以一种更符合逻辑的方式输出了出来
/*按位非*/
var num1 = 18;
var num2 = ~num1;
console.log(num2); //按位非 相当于负值减1 -26
var num3 = -num1 - 1;
console.log(num3); //-26
/*按位与 只要有一个是0就得0*/
var rst1 = 1 & 3; //1:0001 3:0011
console.log(rst1); //结果1
/*按位或 只要有一个是1就得1*/
var rst2 = 2 | 3;
console.log(rst2); //3
/*按位异或 不一样才得1*/
var rest3 = 2 ^ 3;
console.log(rest3); //1
// 左移右移符号位不会动
/*左移 整体向左边移动右边多余部分添0*/
var rest4 = 2; //0010
rest4 = 2 << 5; //0010 0000 0
console.log(rest4.toString(2)); //64
/*右移 向右整体移动 左边多余部分添加0*/
var rest5 = 2;
rest5 = 2 >> 5;
console.log(rest5); //移动之后没有了 0
布尔操作符:逻辑与(&&)、逻辑或(||)、逻辑非(!!);
//逻辑非
console.log(!false);
console.log(!"haha"); //非空字符串为true
console.log(!0); //数值0为false
console.log(!NaN); //NaN为false
console.log(!""); //空字符串为false
console.log(!12235); //非零数值为true
//逻辑与 拥有截断功能 前面为假 整个表达式为假
console.log(1 == 2 && 1 > 2);
//逻辑或 前面为真 整个表达式为真
console.log(1 < 2 || 1 == 2);
四则运算操作符:加(+)、减、乘、除;
相等操作符:等(==)、不等(!=)、全等(===);
关系操作符:小于(<)、小于等于(<=)、大于(>)、大于等于(>=);
条件操作符:布尔表达式?表达式为真的操作:表达式为假的操作;
赋值操作符:=、+=、-=、%=、/=、*=;
逗号运算符:在一个语句中执行多个操作 (如:var a=0,b=1);