JS中循环语句while,for循环,数组的一部分运用。

208 阅读6分钟

JS第四天

[toc]

!= 与!==的区别

let a = 1 ;let b = "1"
console.log(a==b) ; //true 因为==忽略类型,判断里面的值
console.log(a===b) ; //false 因为===不忽略类型,判断类型   和值
console.log(a!=b) ; //false 因为用双等号(==)   a和b是相等
console.log(a!==b) ; //true 因为===   a和b是不相等

image-20220328084440084

一行打印两个结果,中间逗号隔开

console.log(a,b)  //a,b

console.log(undefined) //false

console.log(undefined===undefined) //true

NaN == NaN //false

短路运算:整段代码的结果 等于 && 最后运行的那段代码

let s = 100 && "hello"   console.log(s) //hello
js在判断以下表达式  会自动先转成 布尔类型  再去判断    
最后  s  获取结果的时候  不会转类型   
let b = ""&& "he"  console.log(b)    //""      判断转false ,但用时,还是返回原值
let ss = undefined && "11"  console.log(ss)  //undefined  
let cc = false && "yaya"  console.log(cc)  //false
空字符串  NaN  false  undefined  null 0 转布尔类型  都是false 其余是true

image-20220328085650515

转Boolean的一些易错点

let num = 10; 
num += 5; //num = 15
let res = num++
console.log(res);//15   后置置增先运算后自加
console.log(num); //16   



let x = 10,y=20
let z = x > 20 ? ++x :y++ 
console.log(x,y,z)  //x = 10,y= 21,z = 20

!""   //隐式转布尔  false   加!  true
!{}   //console.log(Boolean({}))   true      加!   false
!!5 true
!undefined   true

字符串.chartCodeAt() -----字符串转数字多少,可以打印出来判断

"2"  > 19   "2"转成数字   
console.log("2"  > 19)  //运算符两侧如果有一个是字符串和一个数字,把字符串转数字后比较1”.chartCodeAt()  字符串转数字多少

字符串数字,和字符串数字比较

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>字符串.charCodeAt()方法</title>
</head>
<body>
    <script>
        // 比较“1” 与“29”
        console.log('"1">"29"  ----->  ', "1">"29");  //false     49>50  false  只比较一位  '1 '与 '2'
        let num1 =  "1",num2="2"
        console.log('"1".  ----->  ', num1.charCodeAt());  //49
        console.log('"2".  ----->  ', num2.charCodeAt());   //50
        
    </script>
</body>
</html>
"2" 和 "1"  做比较   ,如果 “2” > "1"  得出结果  不会再往下 判断  “2”  与“9”  直接关系
“2”  和  “19”   看成数字   本质  字符串   “2”  和 “1”  字符串做比较
charCodeAt()   字符串点它,可以看大小

image-20220328091829379

image-20220328091838250

循环语句

while 循环

重复执行某段代码 while:在。。。期间

语法:

while(循环条件){
    要重复执行的代码(循环体)
}
解释:
跟if语句很像,都要满足小括号里面的条件为true才会进入执行代码
while大括号里代码执行完毕后不会跳出,而是继续回到小括号里判断条件是否满足,满足又执行括号里面的代码,然后再回到小括号里面判断条件,直到括号内条件不满足,跳出循环

let i = 1
while(i <=3){
    document.write("循环3次<bt>")
    i++
}

循环三要素:

1,。变量起始值

2,终止条件(没有终止条件,循环一直执行,造成死循环)

3,变量的变化量(用自增或自减)

image-20220328101940857

while循环练习

需求页面输出1-100

计算从1-100的总和并输出

计算1-100之间所有偶数和

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>页面输出1-100</title>
</head>
<body>
    <script>
        // 1页面输出1-100
        let i = 1
        while(i <= 100){
            document.write(i + "<br/>")
            i++
        }
        // 2 计算从1加到100 和
        // let i = 1,all = 0
        // while(i <= 100) {
        //     all += i
        //     i++
        // }
        // document.write(all)
        // 3 计算1-100之间所有的偶数和
		//分析:2 + 4 +。。。 + 100  
		//判断当前是不是偶数,对2取整,求余  没有余数
		// 2 % 2 = 0  4% 2 = 0 5% 2 = 1

        // let i = 1 ,oddSum = 0
        // while(i <= 100) {
        //     if(i % 2 === 0){
        //         oddSum += i
        //     }
        //    i++
        // }
        // document.write(oddSum)
        // 3 求1-100的奇数和
        // let i = 1,oddSum = 0
        // while(i <= 100) {
		//这一行代码不是能直接执行,满足某系条件执行
        //     if(i % 2 !== 0){
        //         oddSum += i
        //     }
		//无论当前的i是偶数还是奇数,i++ 都要执行 ,必须进行下一轮的循环
        //    i++
        // }
        // document.write(oddSum)
        // 1-100 总和
        // while(i <= 100) {
        //    oddSum += i
        //    i++
        // }
        // document.write(oddSum)
    </script>
</body>
</html>
1-100和  精简写法
let i = 1,sum = 0
while(i<=100){
    sum += i++
    //分析  
    //sum += 1  //sum  = sum + 1
    //sum = sum + i++
    //sum = sum + i
    //i ++
}
1-100  求偶 
分析:
1.偶数和奇数判断条件   对2求余  是否等于0
2 if条件   来判断当前的i 是不是偶数
是  执行代码  业务    计算总和  sum += i
精简写法
let i = 1; sum = 0
while(i<= 100) {
    //加括号,看成一个整体,左边满足,才进行右边
    (i % 2 === 0) && (sum += i);
    i++
}
console.log('1-100偶数和',sum)

ATM取款机案例

分析:

需求:
1.打开页面的时候,弹窗一个对话框
显示
     1,取款
     2,存款
     3,查询余额
     4,退出
2,用户需要输入的一些信息
     1 用户输入 1    继续弹窗  ,又问一遍   以上 1的内容
     2用户输入  2    继续弹窗  ,又问一遍   以上 1的内容
     3用户输入  3    继续弹窗  ,又问一遍   以上 1的内容
     4用户输入  4   结束
第一步  1,  只要用户输入不是4  都弹窗  否则不弹窗  (跟爱不爱我案例类似)
 1,声明一个变量  用来存放  用户的输入值 (1,2,3,42,写循环 条件

  let input,
        money = 0;
      while (input !== 4) {
        //   不满足条件一直弹窗
              //一定要 变量  发生变化
        input = +prompt(`
 请选择你要操作的服务
            1 存储
            2 取款
            3 查看余额
            4 退出`);
        // 开始对用户的输入做判断
        if (input === 1) {
          console.log('1  ----->  ', 1);
          let addMoney = +prompt('请输入要存款的金额');
          money += addMoney;
        } else if (input === 2) {
          console.log('2  ----->  ', 2);
          let reduceMoney = +prompt('请输入要取款的金额');
        //   判断,如果不满足条件,金额大于你的存储就不能进行,并提醒用户输入有误
          if (reduceMoney > 0 && reduceMoney < money) {
            money -= reduceMoney;
          } else {
            alert('输入金额有误');
          }
        } else if (input === 3) {
          console.log('3  ----->  ', 3);
          alert('您现在还有' + money + '元');
        } else if (input === 4) {
          console.log('4,退出  ----->  ', 4);
        }
      }

image-20220328144519181

image-20220328152217242

断点调试

image-20220328101045104

for循环

  • 重复执行代码
  • 好处:把声明起始值,循环条件,变化值写一起
for(声明记录循环次数的变量,循环条件,变化值){
    循环体
}
    for(let i =1;i<9;i = i + 1){
    循环体
}

for循环嵌套

在一个循环里套一个循环,一般用在for循环里

for(外部声明记录循环次数的变量,循环条件,变化值){
   for(内部声明记录循环次数的变量,循环条件,变化值){
    循环体
}
}

image-20220328155833571

for 循环和 while 的使用

当明确次数时,推荐使用:for循环

当不明确次数时,推荐使用:while循环

循环退出

循环结束:

continue:结束本次循环,继续下次循环

break: 跳出所在的循环

可以用break时,尽量使用,性能更优

for(let i = 1;i<=10;i++){
    if(i<5){
        console.log(i)
    }
      console.log("代码调用次数",i)  //  下面会打印
}
//使用break后
for(let i = 1;i<=10;i++){
    if(i<5){
        console.log(i)
        break
    }
      console.log("代码调用次数",i)  //  下面不会打印---可以节省性能
}

测试题:

let i = 0 
for(;i<10;i++){
    if(i%2==0){
        continue
    }
    console.log(i);
    if(i===7){break;}
}
console.log(i)
//1,3,5,7,7

循环的方式: for循环         if else  三元表达式  短路运算 都算不算循环
break 关键字可以用于循环当中,跳出当前循环   ,break后面的代码不会再执行,break关键字的使用一般会有一个前提条件

let num = 10  
for(let i = 0;i<10;i++){
    num++
    if(i==3){
        break
    }
}
console.log(num)  //14 当i == 3时,break跳出循环,num++一共会执行4次(i==0,i==,i==2,i==3)
num 为 14


关于break关键字作用:break关键字可以结束for语句,可以结束while语句,可以中止本次循环的执行
1break关键字可以结束if语句(错误)

for(let i = 0;i<5;i++){
    let j = i
    console.log(i)
    console.log(j)
}    //报错

for(let i = 0;i<10;i++){
    if(i === 7){
        break
    }
    if(i==5){
        continue
    }
    console.log(i)   //012346
}

数组

1,声明语法 :

let 数组名 = [数据1,数据2,。。。,数据n]

数组是按顺序保存,所以每个数据都要有自己的编号。

在数组中,数据的编号叫:“索引或下标”

数组编号从0开始

数组可以存储任意类型的数据

2数组的遍历

用循环把数组中每个元素都访问到,一般用for循环遍历

语法:

for(let i = 0;i < 数组名.length;i++){
    数组名[i]
}
let arr = [10,20,30]
for(let i = 0;i < arr.length;i++){
  document.write(arr[i])
}

3.数组的增加新的数据

数组的.push()方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度、

语法:

arr.push(元素1,元素2,。。。,元素n)
如:
let arr = [1,2,3,4]
arr.push(5)
console.log(arr) // [1,2,3,4,5]

image-20220328105842059

arr.unshift(新增的内容) 方法将一个或者多个元素添加到数组的开头,并返回改数组的新长度

语法:

arr.unshift(元素1,。。。,元素n)
如:
let arr = [1,2,3]
arr.unshift(100)
console.log(arr)  //[1,2,3,100]

数组的删除元素

数组.shift()方法:从数组中删除第一个元素、并返回该元素的值

语法:arr.shift()

let arr = [1,2,3]
arr.shift()
console.log(arr) //[2,3]

数组.splice()方法:删除指定元素(常用)

语法:

arr.splice(start,deleteCount)
arr.splice(起始位置,删除几个元素)
解释:
start 起始位置   指定的开始位置 (从0开始)
deleteCount:
          表示要删除几个
          可选的,如果省略则默认从指定位置删除到最后

  • 关于数组(数据的集合)的增删改查

查:查询数组数据,数组[下标] ,访问数组数据

增:给数组添加新的数据 arr.push(新增内容) ----添加在数组最前面

​ arr.unshift(新增的内容)---添加在数组的末尾

改:重新赋值 数组[下标] = 新值

删: 删除数组中的数据

​ arr.pop() 删除数组最后一个

​ arr.shift() 删除第一个

​ arr.spllice(操作的下标,删除的个数)

image-20220328113655352