-
一元操作符
- 只能够操作一个值的操作叫做一元操作符。
① 和递减操作符
[01] 前置型,递增和递减操作在包含他们的语句被求值之前就执行。
[02] 后置型,递增和递减操作在包含他们的语句被求值之后才执行。
var num1 = 2;
var num2 = 20;
var num3 = --num1 + num2; //21
var num4 = num1 + num2; // 21
-----------
var num1 = 2;
var num2 = 20;
var num3 = num1 -- + num2; //22
var num4 = num1 + num2; //21
② 一元加和减操作符
-
一元加操作符对结果不会有任何影响
-
一元减操作符主要用于表示负数。
-
位操作符
01 按位非(NOT)
使用~表示,执行按位非得结果就是返回值的反码。操作数的负值减去1
var num1 = 25;
var num2 = -num1 -1; //-26
console.log(~num1) //-26
02按位与(AND)
使用&表示,操作两个操作数。 只要有0 就为0
03按位或(OR)
使用 | 表示,操作两个操作数。 只要有1 就为1
按位异或(XOR)
使用 ^ 表示,操作两个操作数。相同则为 0 , 不同则为 1
左移 | 右移( | 有符号 | 无符号)
-
布尔操作符
- 布尔操作符一共有三个,分别是:
非 , 与 , 或
(逻辑运算符) - 01
逻辑非
符号:!
说明:取反的意思,可以应用于任何值,!!
相当于没有操作。 - 02
逻辑与
符号:&&
说明:两个值都为真的时候,结果为真。属于短路操作,如果第一个操作数能够决定结果,那么就不会再对第二个操作数求值。 - 03
逻辑或
符号:||
说明:两个值只要有一个为真,那么结果为真。属于短路操作,如果第一个操作数为真,那么久不会再对第二个才做数求值了。技巧
: 可以利用逻辑或短路操作的特点来避免为变量赋null或undefined值
。
var myObject = refObiect || backupObject;
//如果refObject的值不是null,那么它的值将被赋值给myObject
//如果是null,那么就将backupObject的值赋给myObject。
逻辑或(||)
语法:表达式1 || 表达式2
结果:
判断表达式1,如果表达式1为真,那么就返回表达式1
如果表达式1的值为假,那么就返回表达式2
<script>
var resultA = 3 || 2; //3
var resultB = 0 || 2; //2
var resultC = 5 || 0; //5
var resultD = 0 || 0; //0
</script>
逻辑与(&&)
语法:表达式1 && 表达式2
结果:
如果表达式1为真,返回表达式2
如果表达式1为假,返回表达式1
<script>
var resultA = 3 && 2; //2
var resultB = 0 && 2; //0
var resultC = 5 && 0; //0
var resultD = 0 || 0; //0
</script>
-
乘性操作符
乘 * 除 / 取余 %
加性操作符
加 + 减 -
-
说明:上述五种操作符在操作数为非数值的时候内部会执行自动的类型转换。
-
关系操作符
大于 > 小于 < 小于等于 <= 大于等于 >=
说明:返回布尔类型的值,要么为false,要么为true。
-
相等操作符
01 相等和不相等[先转换再比较],符号是 == 和!=
赋值(=)
等于符号(==)
比较的时候只判断数值是否是相等的
全等符号(===)
比较的时候不仅要比较数据还需要比较类型
不等于(!=)
不全等于(!==)
<script>
var str1 = "让我掉下眼泪的,不止你的温柔";
var str2 = "让我掉下眼泪的,不止你的温柔";
console.log(str1 == str2);
var test1 = 1;
var test2 = "1";
console.log(test1 == test2); //true
console.log(test1 === test2); //false
//数组是引用(地址)类型,存储的是指向具体数据的地址(引用)
var arr1 = [1,2,3]; //0x11
var arr2 = [1,2,3]; //0x22
console.log(arr1 == arr2); //true or (false)
</script>
-
比较的规则
-
[01] 如果操作数中有布尔值,则先转换为数值再比较。
-
[02] 如果是字符串和数值比较,则先将字符串转换为数值再比较。
-
[03] 如果是对象和其他类型的值比较,则先调用对象的valueOf方法,然后用得到的基本类型值去比较。
-
[04] null和undefined是相等的。
-
[05] NaN和NaN不相等。
-
[06] 如果两个操作符都是对象,则比较他们是不是同一个对象,如果指向的是同一个对象则返回true,否则返回false。
02 全等和不全等[仅比较不转换],符号是===和!==
-
比较的规则
- [01] null和undefined是不全等的,因为它们是不同类型的值。
- [02] 类型相同,且值相等,则返回true,否则返回false。
-
条件操作符
符号:表达式1 ? 字面量1 :字面量2说明:如果表达式1的结果为true,则使用字面量1,否则使用字面量2。
-
赋值操作符
符号:=、+=、-=、*=、<<=等等
说明:使用赋值操作符对性能而言,没有任何的提升,只是简化了赋值操作而已。
网友评论