jQuery中的for循环var与let的区别


Posted in jQuery onApril 21, 2018

今天在写jQuery请求接口中发现一个问题:

   

在用AJAX发送请求中又嵌套了一个AJAX请求,发现在内层请求的success中对第一次success中的循环变量 i 无法获取,具体代码如下:

$.ajax({
    type: "get",
    url: "//////////////////////////",
    success: function (result) {
      rs = JSON.parse(result).data;
      for (var i = 0; i < rs.length; i++) { //用var定义有问题
        var pos_ = ""
        $.ajax({
          type: 'GET',
          async: false,
          dataType: 'jsonp',
          contentType: 'application/json; charset=utf-8',
          url: "///////////////////////////////////",
          success: function (result) {
            console.log(rs[i]) //报错
          }
        })
      }
    }
  })

在第二次的ajax请求后的回调函数中,rs[i]是会报错的。

  解决方案:

将for循环中声明变量var i 更改为let i

具体原因:

是第一次回调函数后的for循环中,如果你再次发送请求,for循环并不会停止,即使你写了同步请求也不行。

但是如果你在声明for循环变量用let后,代码会直到你请求完毕,回调函数执行完毕后,再进行下一次的循环。

这就考虑到了一个闭包的问题,如果你写var和let声明的作用域不同。

let i 会以局部变量的形式传递

var i 会以全局变量的形式传递

如果要想将 i 变量传递给下一层,要使用let 去声明。

总结

以上所述是小编给大家介绍的jQuery中的for循环var与let的区别 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

jQuery 相关文章推荐
JQuery实现定时刷新功能代码
May 09 jQuery
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 jQuery
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
jquery animate动画持续运动的实例
Nov 29 jQuery
jquery在启动页面时,自动加载数据的实例
Jan 22 jQuery
jquery根据name取得select选中的值实例(超简单)
Jan 25 jQuery
jQuery实现每隔一段时间自动更换样式的方法分析
May 03 jQuery
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 jQuery
jQuery使用bind动态绑定事件无效的处理方法
Dec 11 jQuery
jQuery实现高级检索功能
May 28 jQuery
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 jQuery
jQuery实现移动端笔触canvas电子签名
May 21 jQuery
jQuery中的$是什么意思及 $. 和 $().的区别
Apr 20 #jQuery
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 #jQuery
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 #jQuery
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 #jQuery
jQuery实现的手动拖动控制进度条效果示例【测试可用】
Apr 18 #jQuery
jQuery实现的两种简单弹窗效果示例
Apr 18 #jQuery
jQuery实现使用sort方法对json数据排序的方法
Apr 17 #jQuery
You might like
PHP 输出简单动态WAP页面
2009/06/09 PHP
Php output buffering缓存及程序缓存深入解析
2013/07/15 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
php生成图片缩略图的方法
2015/04/07 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧不动,右侧滑动)
2019/01/23 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
python打开网页和暂停实例
2014/09/30 Python
Python模拟登录12306的方法
2014/12/30 Python
python实现基本进制转换的方法
2015/07/11 Python
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
教师应聘个人求职信
2013/12/10 职场文书
颐和园英文导游词
2015/01/30 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
怎么用Python识别手势数字
2021/06/07 Python
Pytest中conftest.py的用法
2021/06/27 Python
HTML中的表单元素介绍
2022/02/28 HTML / CSS