一、算术运算符
+ // 加
- // 减
* // 乘
/ // 除
% //取余
var x = 5, y =10;
console.log(x+y); // x + y 15
console.log(x-y); // x - y -5
console.log(x*y); // x * y 50
console.log(x/y); // x / y 0.5
console.log(x%y); // x % y 5
console.log(x/0); // Infinity(无穷大)
console.log(x%0); // NaN
二、一元运算符
一元运算符:只有一个操作数的运算符。
5 + 6 两个操作数的运算符 二元运算符
++ // 自身加一
var num = 5;
// 前置++
// ++num 先让num自身+1,然后在返回表达式的计算结果
console.log(++num); // 6
var num1 = 7;
console.log(num+ ++num1); // 6 + 8 = 14
// 后置++
var num2 = 5
// num++ 先返回表达式的结果num,然后在对自身进行加1
console.log(num2++); // 5
console.log(num2); // 6
var num5 = 7;
// num的值由++num后变为了6
console.log(num + num5++); // 6 +7 = 13
console.log(num5) // 8
-- // 自身减一
// 前置--
var num3 = 8
console.log(--num3); // 7
console.log(num3); // 7
// 后置--
var num4 = 8
console.log(num4--); // 8
console.log(num4); // 7
猜猜看
// ++a 先执行自身+1,然后再返回表达式结果
// a++ 先返回a,在执行自身+1
var a = 1; var b = ++a + ++a; console.log(b); // 2 + 3 = 5
var a = 1; var b = a++ + ++a; console.log(b); // 1 + 3 = 4
var a = 1; var b = a++ + a++; console.log(b); // 1 + 2 = 3
var a = 1; var b = ++a + a++; console.log(b); // 2 + 2 = 4
三、逻辑运算符
1、&& 与 两个操作数同时为true,结果为true,否则都是false。
2、|| 或 两个操作数有一个为true,结果为true,否则为false。
3、!非 取反。
var a =true;
var b=false;
// 与
console.log(a && b) // false
// 总结:只有两个操作数同时为true,结果才为true。
// 或
console.log(a || b) // true
// 总结:只有两个操作数同时为false,结果才为false。
// 非
console.log(!a) // false
四、关系运算符(比较运算符)
1、比较大小 > < >= <=
var a = 10;
var b = 5;
console.log(a>b); // true
console.log(a<b); // false
console.log(a>=b); // true
console.log(a<=b); // false
2、比较值== !=
var a = 10;
var b = 5;
console.log(a==b); // false
console.log(a != b); // true
3、比较值和类型
// 比较值和类型 === 和 !==
var a = 10; // 数值型
var b = '10'; //字符串
console.log(a==b); // true,判断的是变量的值是否相等
console.log(a===b); // false 判断的是值和类型都一致才返回true。
console.log(a !== b); // true 判断的是值和类型都不一致才返回true。
五、赋值运算符
var num = 5;
var num1 = num * 5; // num1值为25
num1 = num1 + 5; //num1值为30
// 简化上述运算
num1 += 5; // num1值为35
// 加
num1 -= 5; // num1值为30
// *= 乘
num1 *= 2; // num1值为60
// /= 除
num1 /= 10 // num1值为6
// %= 取余
num1 %= 3 // num1值为0
六、运算符优先级
优先级从高到低
1. ()优先级最高
2. 一元运算符 ++ -- !
3. 算术运算符 先 * / % 后 + -
4. 关系运算符 > >= < <=
5. 相等运算符 == != === !===
6. 逻辑运算符 先&& 后 ||
7. 赋值运算符
练习
4 >=6 || '人' != '阿凡达' && !(12 * 2 == 144) && true
// 由于没有赋值运算符,逻辑运算符优先级最低,所以可以简化
(4 >= 6) || ('人' != '阿凡达') && ( !(12 * 2 == 144)) && true
// ()优先级最高,先执行小括号里的,由于没有一元运算符,算术运算符优先级高于关系运算符和相等运算符,所以先执行(12 * 2 == 144)
(4 >= 6) || ('人' != '阿凡达') && ( !(false)) && true
// 关系运算符优先级高于相等运算符,所以先执行前面的
(4 >= 6) || ('人' != '阿凡达') && true && true
false || true && true && true
结果为true
var num = 10;
5 == num / 2 && (2 + 2 * num).toString() === '22'
// 没有赋值运算符,逻辑运算符优先级最低,可以简化为
(5 == num / 2) && ((2 + 2 * num).toString() === '22' )
// ()优先级最高,先执行小括号里的
(5 == num / 2) && (22.toString() === '22' )
(5 == num / 2) && true
结果为true