1.1 算数运算符
加法:+ 减法:- 乘法:* 除法:/ 求余:%
- 正常的数据运算
- 数字字符运算,除“ + ”,其他自动将数字字符串隐式转换成数字
console.log('1' + '2'); // '12'
console.log('2' - '1'); // 1
console.log('8' / '4'); // 2
console.log('4' * '8'); // 32
console.log('10' % '3'); // 1
1.2 一元运算符
JavaScript常用的8种一元运算符
运算符 | 描述 |
+ | 将操作数转换成数字、字符串的拼接 |
- | 将操作数转换成数字 |
! | 逻辑取反运算符 |
++ | 递增 |
-- | 递减 |
delete | 删除数组或对象中特定索引的值 |
typeof | 操作数放到typeof的后面,会返回当前操作数的类型,对于数值类型可以准确返回,对于引用类型,Function会返回'function',其他都只会返回'object' |
void | void 运算符对任何值返回 undefined |
+与-
123 + true; // 124
132 + 'true'; // '123true'
var num = '-6';
-num; // 6
++与--
// ++或--
// 放在前面,先自增(自减),后赋值
var a = 0;
var b = ++a; // b = 1;
// 放在后面,先赋值,后自增(自减)
var a = 0;
var b = a++; // b = 0;
!
// 先把值转换成boolean类型,再取反
console.log(!0); // true
console.log(!''); // true
console.log(!NaN); // true
console.log(!false); // true
console.log(!null); // true
console.log(!undefined); // true
console.log(![]); // false
console.log(!{}); // false
delete
var obj = {
name:'zhangsan',
age: 17
};
delete obj.name;
console.log(obj); // {age: 17}
var arr = [1,2,3,4,5];
delete arr[2];
console.log(arr); // [ 1, 2, <1 empty item>, 4, 5 ]
void 丢弃表达式的返回值,而返回undefined
1.3 赋值运算符
运算符 | 例子 | 等价于 |
= | x = y | x = y |
+= | x += y | x = x + y |
-= | x -= y | x = x - y |
*= | x *= y | x = x * y |
/= | x /= y | x = x / y |
%= | x %= y | x = x % y |
1.4 比较运算符
运算符 | 描述 |
== | 等于 |
=== | 值相等并且类型相等 |
!= | 不相等 |
!== | 值不相等或类型不相等 |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
==
等同, 两边值类型不同的时候,要先进行类型转换为同一类型后,再比较值是否相等。
===
恒等,不做类型转换,先比较类型再比较值,类型不同的结果一定不等。
注意点:
- 对于Array,Object等引用类型的引用地址比较,双等和三等是没有区别的
- != 和 !== 与 == 和 === 类似
- 如果符号两侧都是字符串,不会将其转换为数值进行比较,而会分别比较字符串中字符的Unicode编码。 是一位一位进行比较的,如果符号两侧第一位不一样,则谁的大谁就大。
1.5 逻辑运算符
运算符 | 描述 |
&& 与 | 只要“&&”前面为false,无论“&&”后面为true还是false,结果都返“&&”前面的值 只要“&&”前面为true,无论“&&”后面为true还是false,结果都将返“&&”后面的值 |
|| 或 | 只要“||”前面为false,不管“||”后面为true还是false,都返回“||”后面的值 只要“||”前面为true,不管“||”后面为true还是false,都返回“||”前面的值 |
! 非 | 只有 0、'' 空字符串、NaN、null、undefined、false返回 true |
^ 异或 | 任何相同二进制异或运算都得0,不相同的异或运算都得1。 |
1.6 三目运算符
基本语法为: expression ? sentence1 : sentence2
当expression的值为真时执行sentence1,否则执行 sentence2