一、 算数运算符
算术运算符用于执行两个变量或值的运算
- 加法
+
//示例加法,先创建变量 var y = 5; var x = y + 2; //x = 7;
- 减法
-
var y = 5; var x = y - 2; //x = 3
- 乘法
*
var y = 5; var x = y * 2; //x = 10
- 除法
/
var y = 5 var x = y / 2 //x = 2.5
- 余数
%
var y = 5; var x = y % 2; //x = 1
- 自增
++
这里注意
++ 在前
数据直接递增
。++在后
数据下次调用
递增var y = 6; var x = ++y ; //x = 7 y = 6; x = y++ ; //x = 5
- 自减
--
这里注意和++ 的用法一样。
-- 在前
数据直接递减
。--在后
数据下次调用
递减var y = 4; var x = --y ; //x = 4 y = 4; x = y-- ; //x = 5
二、赋值运算符
赋值运算符用于给 JavaScript 变量赋值
- 用法如实例展示,每个要联系几个数字才有更深的理解
=
等于
var x = 5;
var y = x ;
console.log(y)// y = 5
+=
加等于
var x = 15;
var y =1
x += y; //其实就是这个写法 x = x + y
console.log(x) //x = 16
-=
减等于
var x = 15;
var y =5
x -= y; //其实就是这个写法 x = x - y
console.log(x) //x = 10
*=
乘等于
var x = 10;
var y =5
x *= y; //其实就是这个写法 x = x * y
console.log(x) //x = 50
/=
除等于
var x = 10;
var y =5
x /= y; //其实就是这个写法 x = x / y
console.log(x) //x = 2
%=
余等于
var x = 9;
var y =5
x %= y; //其实就是这个写法 x = x % y
console.log(x) //x = 4
三、比较运算符
比较运算符用于逻辑语句的判断,从而确定给定的两个值或变量是否相等,返回结果是
true
、false
==
等等 ; 比较数据数值 。不
比较数据类型
var x=3;
console.log(x==3);//true
console.log(x==4);//false
===
恒等;比较数据数值 。比较数据类型
var x='3';
console.log(x==3);//true
console.log(x===3);//false 数据类型不符
!=
不等于; 比较数据数值 。不
比较数据类型
var x=3;
console.log(x!=4);//true
console.log(x!=3);//false
!==
恒不等于; 比较数据数值 。比较数据类型
var x='3';
console.log(x!=3);//false
console.log(x!==3);//true 数据类型不对 所以不等于
>
大于; 比较数据数值 。不
比较数据类型
<
小于; 比较数据数值 。不
比较数据类型
//数据类型一致
var x=3;
var y=4
console.log(x>y);//false
console.log(x<y);//true
//数据类型不一致,还是一样的结果
var x='3';
var y=4
console.log(x>y);//false
console.log(x<y);//true
>=
大于等于;比较数据数值 。不
比较数据类型
<=
小于等于;比较数据数值 。不
比较数据类型
//数据类型一致
var x=3;
var y=3
console.log(x>=y);//true
console.log(x<=y);//true
//数据类型不一致,还是一样的结果
var x='3';
var y=3
console.log(x>=y);//true
console.log(x<=y);//true
四、字符串运算符(连接符)
字符串运算符用于
连接字符串
全部是数字
的运算就是算数运算符
。有字符串运算就是连接符
+
运算符+=
运算符
//文字字符串
var x = '这是我的';
var y = '后半部分';
var z = x + y;
console.log(z);// 输出 : '这是我的后半部分'
//全是数字字符串
var x = '3';
var y = '4';
var z = '5';
var h = x + y + z;
console.log(z);// 输出 : '345'
//有数字 有字符串数字
var x = '3';
var y = '4';
var z = 5;
var h = x + y + z;
console.log(h);// 输出 : '345'
//全是数字
var x = 3;
var y = 4;
var z = 5;
var h = x + y + z;
console.log(h);// 输出 : 12
// += 其他用法和 + 类似
var x = '这是我的';
var y = '后半部分';
var x += y; //简写的 :x = x + y ;
console.log(x) //输出:'这是我的后半部分'
五、条件运算符(三目运算符)
条件 ? 符合条件执行 : 不符合条件执行 ;
- 示例操作
var x = 3;
var z = x > 5 ? '这个数大于5': '这个数不大'
console.log(z) //输出 : '这个数不大'
六、逻辑运算符
&&
和(并且) 必须都满足
返回结果true
//两者都满足
var x = 3;
var y = 4;
console.log (x < 10 && y > 1) // true
//有一个不满足,如果两个都不满足一样都是false
var x = 3;
var y = 4;
console.log (x < 10 && y < 1) // false
||
或一个满足
返回结果true
//有一个满足,不管几个满足 , 只要有一个满足就是true
var x = 3;
var y = 4;
console.log (x < 10 || y < 1) // true
!
非 (取反)
var x = 3;
var y = 4;
console.log (!(x < 10 && y > 1)) // 不取反true,取反后false
七、位运算符
位运算符工作于32位(二进制位数)的数字上。任何数字操作都将
转换为32位
。结果会转换为 JavaScript 数字
&
AND (并且)
位运算 AND 由和号(&)表示,直接对数字的二进制形式进行运算。它把每个数字中的数位对齐,然后用下面的规则对同一位置上的两个数位进行 AND 运算
00000000000000000000000000008421 :依次上推每一位都是下位乘2 。一共32位数字
//00000000000000000000000000000101 :5
//00000000000000000000000000000001 :1
//转换为32位运算 // 0101 & 0001
var x = 5 & 1;
console.log(x)//共同位数 0001 转换成10进制为 1
|
OR (或者)
位运算 OR 由符号(|)表示,也是直接对数字的二进制形式进行运算。在计算每位时,OR 运算符采用下列规则
//转换为32位运算 0101 | 0010
var x = 5 | 2;
//0101 | 0010 0111
console.log(x); //合并两个数据结果输出 7
//如果两个数有相同的位数则取其中一个就可以
var x = 5 | 1;
//0101 | 0001 0101
console.log(x); //0101 输出 5
^
位运算 XOR (异或)
位运算 XOR 由符号(^)表示,当然,也是直接对二进制形式进行运算。XOR 不同于 OR,当只有一个数位存放的是 1 时,它才返回 1。
//转换为32位运算 0101 | 0010
var x = 5 ^ 2;
//0101 | 0010 0111
console.log(x); //输出 7
//如果两个数有相同的位数则为0
var x = 5 ^ 1;
//0101 | 0001 0100
console.log(x); //0100 输出 4
<<
左移运算32位为一个循环
。
左移运算由两个小于号表示(<<)。它把数字中的所有数位向左移动指定的数量。例如,把数字 2(等于二进制中的 10)左移 5 位,结果为 64(等于二进制中的 1000000)
注意:左移运算保留数字的符号位。例如,如果把 -2 左移 5 位,得到的是 -64,而不是 64。“符号仍然存储在第 32 位中吗?”是的,不过这在 ECMAScript 后台进行,开发者不能直接访问第 32 个数位。即使输出二进制字符串形式的负数,显示的也是负号形式(例如,-2 将显示 -10。)
//转换为32位运算 0101 左移两位
var x = 5 << 2;
//0101
console.log(x); // 010100 输出 20
//转换为32位运算 0101 左移1位
var x = 5 << 1;
//0101
console.log(x); // 01010 输出 10
>>
有符号右移运算32位为一个循环
有符号右移运算符由两个大于号表示(>>)。它把 32 位数字中的所有数位整体右移,同时保留该数的符号(正号或负号)。有符号右移运算符恰好与左移运算相反。例如,把 64 右移 5 位,将变为 2
var x = 64; //等于二进制 1000000
var z = x >> 5;
console.log(z); //输出 2
//负数
var x = -64; //等于二进制 -1000000
var z = x >> 5;
console.log(z); //输出 -2
>>>
无符号右移运算32位为一个循环
无符号右移运算符由三个大于号(>>>)表示,它将无符号 32 位数的所有数位整体右移。对于正数,无符号右移运算的结果与有符号右移运算一样。
//负数
var x = -64; //等于二进制 -1000000
var z = x >>> 5;
console.log(z); //输出 134217726
//正数
var x = 64; //等于二进制 -1000000
var z = x >>> 5;
console.log(z); //输出 2
~
取反
var temp = ~5;
/*
5 二进制 101,补满 32位
00000000000000000000000000000101
按位取反
11111111111111111111111111111010
由于32位开头第一个是1,所以这是一个负数,将二进制转换成负数,需要先反码
00000000000000000000000000000101
之后,再+1
00000000000000000000000000000110
转换成十进制为6,加上符号变成负数 -6
*/