运算符
赋值运算符
“=”、“+=”、“-=”、“*=”、“/=”、“%=”
逻辑运算符
&&(与) 、||(或)、!(非)
逻辑运算符的结果是布尔值
非运算符tips
- 对于非运算符,如果后面不是布尔类型的值,会将其转为布尔类型再进行非运算,只有以下6个值转为布尔类型后是false,其他都是true
1. 0
2. NaN
3. null
4. undefined
5. ""
6. false
- !!可以将其他类型的值转换为布尔类型值,(常用)
Console.log(!!"你好")//true**
与运算符tips
- 两边同时为真,结果才为真,有一个假,结果就为假
- 与运算符还可以发挥短路的作用,即有一个得到结果就不往后执行了,假结果触发短路
var a = 5;
var b = a > 3 && a++ >8;
console.log(a);//6
console.log(b);//false
var a = 5;
var b = a> 6 && a++ > 8 ;
console.log(a);//5 短路表现在a的值
console.log(b);//false
或运算符tips
- 两边同时为假,结果才为假,有一个真,结果就为真
- 或运算符短路机制,真结果触发短路
非布尔值的&&(与)、||(或)运算
返回结果为能决定运算结果的表达式的值 与运算找假结果 或运算找真结果
与、或、非的优先级
!(非)>&&(与)>||(或)
三目运算符
- 语法格式:条件表达式 ?结果1:结果2;
- 条件表达式的结果需要是一个boolean类型的值,如果不是会自动转换
- 如果条件表达式的值是true,最终的结果就是表达式1,否则就是表达式2。
原码、反码、补码
- 计算机中存储的数据是二进制数据
- 二进制数据有三种表现形式,原码、反码、补码
- 在计算机中,将最高位用来表示数的正负,最高位是0表示正数,最高位是1表示负数
原码
- 1.正数的原码,就是最高位为0,然后将该数字转为二进制即可
5的原码是:00000000 00000101
- 2.负数的原码,就是最高位为1,然后将该数字转为二进制
-5的原码是:10000000 00000101
反码
- 1.正数的反码,和原码是一样的
20的原码是:00000000 00010100
20的反码是:00000000 00010100
- 2.负数的反码,是他的原码除了符号位,其他位按位取反
-20的原码是:10000000 00010100
-20的反码是:11111111 11101011
补码
- 正数的原码、反码、补码都是一样的
- 负数的补码是他的反码+1 数据在计算机中存储的都是补码
位运算符
位运算符就是对二进制的数据进行操作。位运算符操作的是 32 位的整数,如果是小数的话会取整计算。最高位用来表示正负,0-正数,1-负数。
按位非运算符 ~
按位非运算符就是将某个数的二进制(补码)每位都进行取反,最后得到的结果。
- 一个数与自身的取反值相加,等于-1
- 对一个整数连续两次按位取反运算,得到它自身。(常用于取整操作)
左移运算符 <<
左移运算符就是把数字的二进制数据(补码)整体向左移动,右侧用0补齐,移动时首位符号位也跟随移动,移动出去的内容丢失。
- 左移几位,就是这个数字乘以2的几次方。
- 左移0位,相当于将该数值取整。
右移运算符
右移运算符就是把数字的二进制数据(补码)整体向右移动,如果是正数,头部全部补0,如果是负数,头部全部补1
- 右移运算符相当于除以2的几次方
数据类型转换
1.自动类型转换
- number:一些算数运算符会自动进行隐式的转换
- string:加空字符串进行转换,利用字符串的拼接
- boolean:6种数据形式直接转为false,其他转为true
2.强制类型转换
Number()、String()、Boolean()
分支结构
if语句
if(条件表达式){代码块}
if else语句
if(条件表达式){代码块}else{代码块}
If-else if 语句
if(条件表达式){代码块}
else if(条件表达式2){代码块}
else{代码块}
switch语句
var week;
switch(week){
case 0:
console.log(`周日`);
break;
case 1:
console.log(`周1`);
break;
case 2:
console.log(`周2`);
break;
case 3:
console.log(`周3`);
break;
case 4:
console.log(`周4`);
break;
case 5:
console.log(`周5`);
break;
case 6:
console.log(`周6`);
break;
default:
console.log(`请输入正确日期`);
}
生成随机整数
~~(Math.random()*(max-min+1)+min);
循环
for循环语法结构
for(1.初始化部分;2.循环条件;4.迭代部分){3.循环体}