for,for-of,for-in循环的基本案例----初学者必学

  • for循环的基础使用
 for(i=0;i<=10;i++){
       
        console.log(i)//1-10
    }
    console.log(i)//11,内存泄漏

为何会出现11呢,这是因为循环迭代到11的时候,退出循环会保存最后的值,所有就会被外面的console获取=========我个人认为就是循环到了11的时候,就已经泄漏了。所以外面就能获取,但是因为后面又判断了,所以里面的console等于1-10.

在这里插入图片描述

  • 如何解决内存泄漏
<script>
    for(i=0;i<=10;i++){
       
        console.log(i)//1-10
    }
    console.log(i)//11,内存泄漏

    for(let i=0;i<=5;i++){
        console.log(i)//1-5
    }
    console.log(i)//11,使用了let块级作用域

</script>
 for(i=0;i<=5;i++){
        setTimeout(()=>console.log(i),0)//6
    }
    for(let i =0;i<=5;i++){
        setTimeout(()=>console.log(i),0)//1-5
    }

个人理解:就是for是同步的,settimeout是异步的,就是当for循环全部执行完之后,异步就相当于在外面console,所以内存会泄漏,变成let块级作用域之后,console就在里面了=====官方的话:因为let会为每一次迭代的变量赋值一个新的变量,所以settimeout引用的都是不同的变量实例

在这里插入图片描述

  • 以下为for循环的小案例
for(i=1;i<=9;i++){
     document.write("<table><tr>")
    //  document.write("<br>")
     for(j=1;j<=i;j++){
        //  console.log(i+'*'+j)
         document.write("<td>"+i+'*'+j+'='+i*j+'</td>')
         
     }
     document.write('</tr></table>')
 }

嵌套循环里面j<=i是一定要的,不然会重复执行,document.write(’《/tr></table》’)不要写在嵌套循环里面,不然只有一次循环有作用,拼接字符串要用+号

var sum = 0;
for(var i = 1;i <= 3; i++){
sum += i;
//sum=1+2=3,3+3=6
}
console.log('1-3之间整数的和 = ' + sum);

sum=1+2=3,3+3=6

str=""
for(i=0;i<6;i++){
    for(j=i;j>=i;j--){
       str += '*';
       console.log(str)
    }
   			*
for.html:30 **
for.html:30 ***
for.html:30 ****
for.html:30 *****
for.html:30 ******

一直叠加到6。0,1,2,3,4,5

  • for-in遍历非数组对象对象
person ={name:1,age:2}
var a =""
for(a in person ){
    console.log(person[a])//将所有值丢进去a里面,输出1,2
    
}

不是很懂能用来干嘛

  • for-of语句
person= [1,2,3]
for(var t of person){
    console.log(t);//1,2,3
}

遍历可迭代的对象,比如数组,person={name=1}这个就不行,不能迭代

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值