8.26 冯娜

学习日志

今天学习了运算符和表达式,

一、什么是程序:

程序就是人们的想法在计算机中的执行。

二、什么是运算符:

程序中模拟人的想法的特殊符号。

三、什么是表达式:

由运算符连接操作的数据,所组成的形式就是表达式
表达式的执行过程:从左向右,依次执行,每读到一个变量就将变量换成变量中的值。

四、运算符:

1、算术运算符:%、++、--。隐式转换:一切转为number,再算数计算。特殊情况:运算中只要有一个字符串,全部转为字符串,+ 计算此时改为字符串拼接。
问题:凡是从页面上获得的数据都是字符串。
解决:做算数计算前,必须用parseFloat()强转为数字类型。

2、比较运算符:=、<=、、!=、>、<、= (全等于\严格等于)、!== (不全等于)。

注:1、=== 不仅比较值,还会比较数据类型是否一样,先比较数据类型。

​ 2、两个字符串比较,比较的是首字符的Unicode码。

​ 3、NaN和任何值比较(> < <= >= == ===)都是flase,包括自身。

3、逻辑运算符:

  • 逻辑与(&&):并且
  • 逻辑或(||):或者
  • 逻辑非(!):非

  • 逻辑短路:注意:逻辑短路无需关注最终的结果是true还是false,重点看第二个表达式是否有执行:

1、&& 当第一个条件为false的时候,就不需要再执行第二个条件了

2、|| 当第一个条件为true的时候,就不需要再执行第二个条件了

4、位运算符:

  • 按位与(&)
  • 按位或(|)
  • 按位异或(
  • 按位左移(<<)
  • 按位右移 (>>)

案列:

原码: 0000 1100
12: 0 1100
21: 1 0101,
& 0 0100 ==>4
| 1 1101 ==>29
^ 1 1001 ==>25

  1. 按位左移/右移
    // console.log(20>>1) // 10
    // 20: 0000 1010
    // 按位右移是在二进制末尾删除n位,在开头补0
    // console.log(20<<1) // 40
    // 20: 0010 1000 ==>40
    // 按位左移是在二进制开头删除n为,在末尾补0
    // console.log(-10>>2) // -3
    // 原码: 1 0000 1010,
    // 反码: 1 1111 0101,
    // 补码: 1 1111 0110,
    // 移位: 1 1111 1101,
    // 取反(反码): 1 0000 0010
    // 原码(补码): 1 0000 0011 ,// -3
    // 负数在按位右移的过程中,高位补1
    // 按位左移
    // console.log(-10<<2) // -40
    // 原码:1 0000 1010
    // 反码:1 1111 0101
    // 补码:1 1111 0110
    // 左移:1 1101 1000
    // 取反:1 0010 0111
    // 原码(补码):1 0010 1000 // -40

    5、赋值运算符:

    赋值运算也有返回值,返回值保存到等号左边的变量中的新值。

    注:运算符的优先级

    案例:

    // var a=1;
    // // a=1;
    // a+=2; // ==> a=a+2
    // a-=2; // ==> a=a-2
    // a=2; // ==> a=a2
    // var a=1,b=1;
    // console.log(a+=b+=2)
    // a=1+(b=3) ==4

    6、三目运算符:

    条件表达式?表达式1:表达式2

    结果:若条件为true,执行表达式1;

    ​ 若条件为false,执行表达式2。

    7、逻辑结构:

    流程控制(选择执行)

    1、if语句:

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

    注意:

    1.如果if后的语句只有一行,则可以省略大括号;
    2.在条件表达式中,有一些值默认转成false,例如:undefined、null、0、NaN、"";
    3.判断一个值是否为NaN,使用isNaN()方法,如果是返回true,否则返回false。

    2、if-else语句:

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

    3、if-else语句嵌套:

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

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

    循环执行:

    1、while循环:

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

    2、do-while循环:

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

    注意:do-while循环先执行一遍do里的内容,再去判断循环条件,do-while循环至少执行一次。

    4、for循环:

    for(表达式1 ; 表达式2 ; 表达式3) {
    循环体;
    }

    注意:当for循环有多个循环条件时,最后一个循环条件起作用。

    案例:

    九九乘法表:

    今天感觉好一些,可能是因为这些语法以前学过的缘故,区别就是格式上的差别,要多加练习。熟悉个格式。

评论