当前位置: 首页 > news >正文

甘肃建设厅网站二级建造师报名时间网上商城建设

甘肃建设厅网站二级建造师报名时间,网上商城建设,佛山网站建设维护,网站建设的背景看了很多解释,感觉都不好理解。这个文章是我自己的理解,可以做个参考,如果我理解的不对,欢迎在评论区指正: var:使用var声明的变量具有全局作用域 (循环中每次声明的是同一个变量) l…

看了很多解释,感觉都不好理解。这个文章是我自己的理解,可以做个参考,如果我理解的不对,欢迎在评论区指正:


var:使用var声明的变量具有全局作用域 (循环中每次声明的是同一个变量)
let:使用let声明的变量具有局部作用域 (循环中每次声明的是新的变量)每次是新的作用域

为什么var使用的是同一个呢?因为var可以变量提升,let不可以;

可以把for循环拆解成这样的代码去理解,就通顺了:

for(var i=0;i<2;i++){setTimeout(()=>console.log(i),1000)
}// 相当于
var i;  // 变量提升
function q(){i=0;setTimeout(()=>console.log(i),0)
}
q();function w(){i=1;setTimeout(()=>console.log(i),0)
}
w();function e(){i=2;
}
e();

然后let可以拆解成这样:
 

for(let i=0;i<2;i++){setTimeout(()=>console.log(i),1000)
}// 相当于
function q(){let  i=0; // 变量提升不了setTimeout(()=>console.log(i),0)
}
q();function w(){let i=1;setTimeout(()=>console.log(i),0)
}
w();function e(){let  i=2;
}
e();

 var里面由于改变的都是同一个变量,setTimeout引用的变量地址指向同一个值,所以最后值是相同的。

let里面由于每次都开辟了一个新的内存空间,setTimeout引用的变量地址指向的是不同的值,所以最后值是不同的。

==================================

以上是对let解决方法的语意化,如果使用闭包那么就转化为这样:

for(var i=0;i<2;i++){(function(j){setTimeout(()=>console.log(j),0);})(i)
}var i;  // 变量提升
function q(){i=0;   // 闭包(function(j){setTimeout(()=>console.log(j),0);})(i)
}
q();function w(){i=1;(function(j){setTimeout(()=>console.log(j),0);})(i)
}
w();function e(){i=2;
}
e();

如果说的不对,欢迎指正🎉

http://www.mmbaike.com/news/34895.html

相关文章:

  • 厦门网站制作维护青岛百度推广优化怎么做的
  • 科技与狠活是什么意思首页优化公司
  • 动态网站如何做seo广东省自然资源厅
  • 手机网站建设品牌链接推广平台
  • 威海建设局网站楼盘信息公布北京最新疫情
  • 好久不见在线观看免费高清湖南企业seo优化报价
  • 产品报价网站建设费用公司网站设计公司
  • 广州哪个公司做网站快手刷粉网站推广
  • 那做网站产品推广软文范文
  • 建站公司 转型经验超级seo助手
  • wordpress5.0启多站点广告商对接平台
  • 青岛西海岸新区建设局网站郴州网站建设
  • 手机做网站公司站外推广渠道
  • 个人可以做企业网站自助建站系统代理
  • 网络服务主要包括哪些seo服务工程
  • 郑州新密网站建设店铺如何运营和推广
  • wordpress 时间线插件seo数据分析
  • 济南做网站公司电话2023年免费进入b站
  • 做下载网站挣钱吗怎样制作网页新手自学入门
  • 肇庆百度网站推广元搜索引擎有哪些
  • 网站排名分析 用户需求市场营销公司
  • 可以做go分析的网站游戏代理平台哪个好
  • 做服装批发的网站全网搜索引擎
  • 免费稳定的云服务器抖音seo系统
  • 鄂尔多斯做网站的公司营销型网站特点
  • 妈妈做愛网站seo软件哪个好
  • 菏泽网站建设电话佛山seo教程
  • 贵金属企业网站源码江苏提升关键词排名收费
  • 济宁市中网站建设google play下载
  • 深圳外贸建站网络推广价格提高工作效率心得体会