标题:求教一个问题,关于for的块作用域
只看楼主
xuegao123
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2022-7-14
 问题点数:0 回复次数:1 
求教一个问题,关于for的块作用域
按照我的理解,以下两个代码实现的功能应该是一样的,为啥输出不一样:
代码一:
程序代码:
for (let i=0;i<=1;i++)
{
    setTimeout(()=>{console.log(i)},1000)
}
//output: 0 1


代码二:
程序代码:
{
    let i=0
    {
        setTimeout(()=>{console.log(i)},1000)
    }
    i++
    {
        setTimeout(()=>{console.log(i)},1000)
    }
}
//output: 1 1
搜索更多相关主题的帖子: for 作用域 i++ console 代码 
2022-07-14 15:52
claver
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2022-8-15
得分:0 
i 的作用域不一样,
代码二中的 i 相对于代码
程序代码:
{
    setTimeout(()=>{console.log(i)},1000)
}


而言,是外部变量,你需要这样才能得到一样的结果:
程序代码:
{
    {
        let i=0
        setTimeout(()=>{console.log(i)},1000)
    }
    {
        let i = 1
        setTimeout(()=>{console.log(i)},1000)
    }
}
2022-08-15 17:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509564-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.105076 second(s), 10 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved