20200826-叶梦宇

学习总结

JS

1,位运算符(按照二进制来)

我们所进行的数值计算都是二进制计算

二进制:原码 补码 反码

正数的原码,补码,反码都是一样的

按位与(&)

对应的两个二进位均为1时,结果位才为1 ,否则为0

按位或(|)

对应的两个二进位有一个为1时,结果位就为1

按位异或(

对应的两位不同时结果为1,相同时为0

总结:相同为0,相异为1

12的原码 0000 1100

21的原码 0001 0101

12:0 1100

21:1 0101

& 0 0100 ==> 4

| 0 1101 ==> 29

^ 1 1001 ==> 25

按位左/右移(<<,>>)

正数

》》20:0001 0100 按位右移是在二进制末尾删除n位在前面补0

​ 00001010

《《 20: 0001 0100 按位左移是在开头删除n位,在末尾补0

​ 0010 1000

负数

》》 console.log(-10>>2)

原码: 1 0000 1010

反码 1 1111 0101

补码 1 1111 0110 在补码上进行移动

移位 1 1111 1101

去反 1 0000 0010

原码 1 0000 0011 》》 -3

负数在按位右移的过程中 高位补1

《《 console.log(-10<<2)

原码 10000 1010

反码 1 1111 0101

补码 1 1111 0110

左移 1 1101 1000

取反 10010 0111

原码(补码)1 0010 1000

实际应用

下取整

m>>>>0:无符号右移 运算符

m|0 m0

不声明第三个变量,交换两变量的值
1.a=b; b=a; a=b;
2.a+=b; b=a-b; a-=b;
问题:以上两种方法只能交换数字类型的数据
3.a=[b,b=a][0];

2,赋值运算符

a+=b ==> a=a+b // 累加

a=b ==> a=ab // 累乘

a-=b ==> a=a-b // 累减

a/=b ==> a=a/b // 累除

a%=b ==> a=a%b // 累取余

3,三目运算符

单目运算符 由一个数据和运算符组成:a++ 、a-- 、!a(除此之外,其他的均为双目运算符)

双目运算符 由两个数据和运算符组成:1 && 2、1+1、3>2、1||2...

三目运算符 条件表达式?表达式1:表达式2 判定结果:

​ 如果条件为true,执行表达式1

​ 如果条件为false,执行表达式2

l例如

var a=1 b-2

a>=b? console.log('ok') a>=b? console.log('no')

二,逻辑结构

1 流程控制

if语句

if(条件表达式){
语句1
}
语句2

1.如果if后的语句只有一行,则可以省略大括号;

2.在条件表达式中,有一些值默认转成false,例如:undefined、null、0、NaN、"";

if-else语句
if(条件表达式){
语句1
}else{
语句2
}

if-else语句嵌套
if(条件表达式1){
语句1
}else if(条件表达式2){
语句2
}else{
语句3
}

switch-case语句
switch(表达式){
case 值1:
语句1; break;
case 值2:
语句2; break;
...
default: 语句n;
}

  1. if-else可以判断相等或者不相等的情况,使用范围广泛
    1. switch-case只能用于全等于的比较,结构上更为清晰、合理,执行效率高

模板字符串

英文状态下``

``

2,循环执行

循环的条件:限制循环千万不要执行死循环

随机数:Math.random() 范围是[0,1)

while

while (循环条件) {
循环体;
}

如果条件正确,他会一直 循环

while (true) {
循环体;
}

while(循环条件);

do-while循环
do{
循环体;
}while(循环条件);

不管有没有条件,do都执行一次


for循环

for循环
for(表达式1 ; 表达式2 ; 表达式3) {
循环体;
}
表达式1:初始值
表达式2:循环条件
表达式3:增量
实例:打印本世纪前10个闰年(2000~2100)
for(var i=2000,n=1;i<=2100,n<=10;i++){
if( ( i%4=0 && i%100!1 ) || i%400===0 ){
console.log(i);
n++;
}
}

for循环中,可以存在多个条件,以后一个为准

break和continue
1. continue:跳过本次循环,继续下一次的循环
2. break:结束循环,后续不会再执行其他的循环

学习心得

今天学习了JavaScript的简单算法,和进行了一些练习,感觉自己的逻辑思维还不是太灵活,还是要多敲代码

评论