JS基础初识第二天知识点总结

151 阅读5分钟

第二天

运算符

1.比较运算符

比较运算符在JS中有这几种 > < >= <= == != === !== 其中> < >= <=跟我们平时理解的一样意思。

== 判断两个数据值相同,如果相同返回ture,否则返回false != 判断两个数据值不相同,如果不相同返回ture,否则返回false

console.log(10 == 10);      // true
console.log(10 == 20);      // false
console.log(10 != 20);      // true
console.log(10 != 10);      // false

注意点!! 如果字符串之间相互比较,则会比较字符串本身的计算机编码(具体编码可通过百度查询)

=== 为全等号,比较的两个数的值与类型必须完全相同,相同返回ture,否则返回false

console.log(10 == '10');        // true
console.log(10 === '10');       // false
console.log('10' === '10');     // true

!== 为不全等 比较的两个数据,值与类型至少有一方面相同,有一方面相同就返回ture,否则返回false

console.log(10 != '10');           // false
console.log(10 !== '10');          // true
console.log(10 !== 10);            // false

小结:

  • 进行比较时不会进行类别转换
  • === 比较的值与类型必须完全相同
  • !== 比较的值与类型至少有一者不相同
  • 全字符串的比较,比较的是字符编码
  • 比较运算符最终的结果都是布尔值

2.逻辑运算符

逻辑运算符:用于对象多个条件进行逻辑判断 && 逻辑与 || 逻辑或 ! 逻辑非

逻辑与 && 找假,一假全假

console.log(true && false);         //false
console.log(false && true);         //false
console.log(true && true);          //ture
console.log(false && false);        //false

逻辑或|| 找真,一真全真

console.log(true && false);         //ture
console.log(false && true);         //ture
console.log(true && true);          //ture
console.log(false && false);        //false

逻辑非! 反着来

console.log(!true);         // false
console.log(!false);        // true

案例:由用户输入一个整数,判断其是4的整数倍,但不是100整数倍

let n = prompt('请输入一个整数');
console.log(n % 4 == 0 && n % 100 != 0)

案例:由用户输入一个整数,判断即是3的整数倍,又是5整数倍

let n = prompt('请输入一个整数');
console.log(n % 3 == 0 && n % 5 == 0)

3.运算符的优先级

很简单

常理来说,运算符先乘除后加减 在有逻辑非出现的时候,逻辑非优先级别在第一位。 总结来说

  1. 逻辑非
  2. 乘除
  3. 加减
  4. 比较
  5. 逻辑与/或
  6. 赋值

注意点!在实际使用中,添加括号来确保优先级顺序符合实际需求是最好的方法!

4.自增与自减

  • ++为自增符号,意义为变量+1
  • --为自减符号,意义为变量-1
  • 自增或自减既可以放在变量前,也可以放在变量后。
  • 放在变量前,要注意前面是否有赋值需求。
  • 对变量本身来说,放在前后都没有影响,都是自增1或自减1 但是在参与其他运算的时候,放在前面,会先自增,在参加运算。放在后面的时候,会先运算,再自增。 例如:
  1. let i = 10; let ret1 = ++i;
  2. let j = 10; let ret2 = j++;
  • ret1输出的结果为11
  • ret2输出的结果为10

这里要注意~,划重点啦~!

分支结构-if分支

1.if分支语法及执行逻辑

题外话:JS中三种结构。

  1. 顺序结构 普通顺序执行
  2. 分支结构 含有if分支的结构
  3. 循环结构 for的循环执行的结构

分支结构

应用场景:需要根据条件来决定某一段代码的执行。 语法:

if(表达式1){
    //代码块1else if(表达式2){
    //代码块2
}...

执行逻辑:

  • 自上而下的判断表达式是否成立,如果某个表达式成立就执行相应的代码块。
  • 当某个代码块执行结束后,不会再判断其后的表达式,而跳过if结构,继续执行后面的代码
  • 如果所有的表达式都不成立,则执行缺省代码块
  • 其中 else if 结构可以多个也可以不接
  • else也可以省略

if 单分支

let n = prompt('请输入一个数');
        if(n>100){
            document.write('yes');
        }

if 双分支

let gender = prompt('请输入性别')
        if(gender == '男'){
            document.write('胜似潘安');
        }else if(gender == '女'){
            document.write('沉鱼落雁');
        }

if 多分支

let gender = prompt('请输入性别')
        if(gender == '男'){
            document.write('胜似潘安');
        }else if(gender == '女'){
            document.write('沉鱼落雁');
        }else{
            document.write('数据不合法');
        }

if 分支案例

需求~

  •     如果 >=90 输出 优秀
    
  •     如果 >=80 输出 优良
    
  •     如果 >=70 输出 良好
    
  •     如果 >=60 输出 及格
    
  •     如果 <60 输出 不及格
    
let score = prompt('请输入一个分数');
        if(score >= 90){
            document.write('优秀');
        }else if(score >= 80){
            document.write('优良');
        }else if(score >= 70){
            document.write('良好');
        }else if(score >= 60){
            document.write('及格');
        }else{
            document.write('不及格');
        }

3.三元运算符

三元运算符实际上是if的一种简写

语法:表达式 ? 语句1 :语句2

执行逻辑:

  1. 首先判断表达式是否成立
  2. 成立就选择语句1来执行
  3. 不成立就选择语句2来执行
let a = 50;
if( a > 100){
            document.write('yes')
        }else{
            document.write('no')
        }
        
等于
        
a > 100 ? document.write('yes'): document.write('no');

三元运算符就是对if else 双分支的简化

提示:三元运算符结果还可以赋值给变量,例如

let ret = a > 100 ? true : false;
        console.log(ret);

三元运算符案例

有a b c三个数,求其中最大数。

let a = 8;
let b = 20;        
let c = 100;
let max = a > b ? a : b;
let final = max > c ? max : c;
console.log(final);

布尔类型的转换

1.显示转换

  1. // Number(数据) 将其他数据类型转换为数值类型
  2. // String(数据) 将其他数据类型转换为字符串类型
  3. // Boolean(数据) 将其他数据类型转换为布尔类型
console.log(Boolean(10));       // true
console.log(Boolean(-10));      // true 
console.log(Boolean(0));        // false

console.log(Boolean('hello'));  // true
console.log(Boolean(''));       // false
console.log(Boolean(' '));      // true
console.log(Boolean('0'));      // true

只要数据是有意义的都会返回到ture

2.隐式转换

布尔类型的隐式转换

!取反运算符

let a = 10;
console.log(!a);            //  false
let b = '';
console.log(!b);            // true

if 的表达式或 三元运算符 表达式

if(表达式)   
表达式 ? 语句1 : 语句2
        
if(100){               
    document.write('yes')
}
相当于 if(Boolean(100))

分支结构-switch分支

switch语法

switch(变量){
    case1:
        代码块1
        break;
    case2:
        代码块2
        break;
    case3:
        代码块3
        break;
    default:
        缺省代码块
}

执行逻辑:

  • 根据switch后的变量与case的值匹配情况,将程序转向不同的代码块执行。
  • 当代码执行结束后,遇到break就会跳过switch结构,继续后面代码执行
  • 当所有的值都不匹配时,执行缺省代码块。
  • case结构可以有多个,default也可以省略。

星期案例

let day = +prompt('请输入一个数');       
switch(day){
    case 1:
        document.write('星期一');
        break;
    case 2:
        document.write('星期二');
        break;
    case 3:
        document.write('星期三');
        break;
    case 4:
        document.write('星期四');
        break;
    case 5:
        document.write('星期五');
        break;
    case 6:
        document.write('星期六');
        break;
    case 7:
        document.write('星期日');
        break;
    default:
        document.write('数据不合法');
}

if与switch区别

let score = prompt('请输入一个分数');
if(score >= 90){
    document.write('优秀');
}else if(score >= 80){
    document.write('优良');
}else if(score >= 70){
    document.write('良好');
}else if(score >= 60){
    document.write('及格');
}else{
    ocument.write('不及格');
}
  1. if条件常用于表达一个范围
  2. switch条件一个变量和多个具体指的匹配
  3. 如果遇到一个变量和多个具体至匹配的情况,推荐使用switch,因为这种情况下switch的效率高于if

计算器案例

// 接收用户输入的第1个数
let n1 = +prompt('请输入第1个数');
// 接收用户输入的第2个数
let n2 = +prompt('请输入第2个数');
// 接收用户输入的所要计算的方式:加 减 乘 除
let op = prompt('请输入所要进行的计算:加 减 乘 除');

let result;
switch(op){
    case '加':
        result = n1 + n2;
        break;
    case '减':
        result = n1 - n2;
        break;
    case '乘':
        result = n1 * n2;
        break;
    case '除':
        result = n1 / n2;
        break;
    default:
        alert('请输入正确的计算');
}
document.write(result)

switch的穿透

案例说明

        // 输出季节
        // 12 1 2   冬季
        // 3 4 5    春季
        // 6 7 8    夏季
        // 9 10 11  秋季
        let month = 5;
        switch(month){
            case 12:
            case 1:
            case 2:
                document.write('冬季');
                break;
            case 3:
            case 4:
            case 5:
                document.write('春季');
                break;
            case 6:
            case 7:
            case 8:
                document.write('夏季');
                break;
            case 9:
            case 10:
            case 11:
                document.write('秋季');
                break;
            default: 
                document.write('数据不合法');
        }

在switch语法中,具有穿透性。可以直接向下执行到break

循环结构 - for循环

for循环结构及逻辑

for循环:重复执行一段代码 for语法:

    1.for( 初值 ; 终值 ; 步长){

    2.for( 循环控制变量初始化 ; 表达式 ; 循环控制变量修改){
        // 循环体代码
        // 循环体代码
        // 循环体代码
        }

执行逻辑:

  1. 首先执行 定义一个循环控制变量,此步仅执行1次

2.其次开始判断 表达式 是否成立,如果不成立就直接退出整个语法结构,执行后续代码。如果成立就执行语句块(循环体)

3.当语句块(循环体)执行结束后,再执行 循环控制变量修改

4.再来判断表达式是否成立,如果不成立就直接退出整个语法结构,执行后续代码。如果成立就继续循环执行语句块(循环体)

5.重复执行 2 3 4

如:

for(let i=0; i<10; i++){
    console.log('hello')
}

执行循环打印出hello直到i<10不满足为止。

循环控制变量的应用及if条件应用

        // 对用户输入的10个进行求和
        // let sum = 0;
        // for(let i=0;i<5;i++){
        //     let n = +prompt('请输入所要求和的数');       // 10 20 20 10
        //     sum = sum + n;
        // }
        // console.log(sum);

        // 计算1 至100之间的整数和
        let sum = 0;
        for(let i=1;i<=100;i++){
            sum = sum + i;
        }
        console.log(sum);
        // 使用for循环在页面输出110列的表格
        let str = '<table border="1" rules="all" width="500" height="500">';
            
        str +='<tr>'
        for(let i=0;i<10;i++){
            str +='<td></td>'  
        }   
        str +='</tr>'

        str += '</table>'
        
        document.write(str);
由用户输入两个数值,如果第1次输入的,比第2次输出的大数值就交换位置
        let a =+prompt('1')
        let b =+prompt('2')
        if (a > b) {
            let c = a
            a = b
            b = c        
        }
        console.log(a, b)
由用户输入10个整数,如果是偶数,就打印出来
        for (let i = 0; i < 10; i++){
            let a = prompt('用户输入的数据');
            if (a % 2 == 0) {
                console.log(a)  
            }                     
        }
判断闰年
由用户输入一个年份,并输出是闰年,还是平年
条件:能被400整除一定是闰年能被4整除不能被100整除。
 
        let year = prompt('请输入一个年份')

        if (year % 400 == 0 || year % 4 ==0 && year % 100 != 0) {
            alert('闰年')            
        }else{
            alert('平年')
        }
数字补0
由用户输入数字,如果输入的是一位数字,则在前面补0

        let a =+prompt('请输入一个数字')

        if (a < 10 && a > -10) {
            a = '0' + a                      
        }

        console.log(a)
将用户输入的10个数保存到一个数组中

        let A = []

        for (let i = 1; i <= 5; i++) {
            
            A[i] = prompt('输入一个数据')                        
        }
        document.write(A)

over---------------------