[](()位非运算符 ~
[](()位与运算符 &
有一个0为0,没有0为1
- 1 & 1 = 1, 1 & 0 = 0,0 & 1 = 0,0 & 0 = 0
var a = 20; // 转成二进制:10100
var b = 10; // 转成二进制:01010
// 位与运算后:00000 转成10进制 --> 0
console.log(a&b); // 输出:0
[](()位或运算符 |
有一个1为1,没有1为0
- 1 | 1 = 1, 1 | 0 = 1,0 | 1 = 1,0 | 0 = 0
var a = 20; // 转成二进制:10100
var b = 10; // 转成二进制:01010
// 位或运算后:11110 转成10进制 --> 30
console.log(a|b); // 输出:30
[](()位异或运算符^
相同为0,不同为1
- 1 ^ 1 = 0, 1 ^ 0 = 1,0 ^ 1 = 1,0 ^ 0 = 0
var a = 20; // 转成二进制:10100
var b = 10; // 转成二进制:01010
// 异或运算后:11110 转成10进制 --> 30
console.log(a^b); // 输出:30
[](()左移位运算符、右移位运算符
console.log(8<<2); // 10000 --> 32
console.log(8>>2); // 10 --> 2
console.log(1<<n); // 可以求2的n次幂
console.log((0x0000FF<<16).toString(16)); // 颜色值
[](()关系运算符
常见的关系运算符:< >
重点关注 == 和 === 的区别:
- == 自带隐式转换
null == undefined
0 == “” == false
NaN与任何内容都不同,NAN也不等于NaN,常使用isNaN判断某值是否为数字
console.log(1 == “1”); // true
console.log(null == undefined); // true
console.log(0 == “”); // true
console.log(0 == false); // true
console.log(isNaN(parseInt(‘10a’))); // false
if(!x) { // 满足条件的x值有: “” 0 false undefined null NaN
}
- === 表示两者之间的类型和值是否都相等
[](()逻辑运算符
常用的逻辑运算符有: ! && ||
[](()7.循环语句
所谓循环,具体有以下几个特点:
-
必须要有条件初始变量
-
必须要有进入循环的条件
-
必须有向条件外发展的表达式
[](()while循环
例子:
[](()do while循环
do while循环,先执行do的内容块,然后才去判断条件,如果条件满足时继续循环,如果不满足就不再循环;而while循环是先判断条件才去执行语句块的