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插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 jQuery
jquery replace方法去空格
May 08 jQuery
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
Jul 12 jQuery
jQuery动态添加.active 实现导航效果代码思路详解
Aug 29 jQuery
jquery写出PC端轮播图实例
Jan 26 jQuery
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 jQuery
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
Sep 03 jQuery
jQuery擦除插件eraser使用方法详解
Jan 11 jQuery
jQuery表单校验插件validator使用方法详解
Feb 18 jQuery
jQuery实现购物车全功能
Jan 11 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
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
PHP与C#分别格式化文件大小的代码
2011/05/14 PHP
iOS10推送通知开发教程
2016/09/19 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
2017/05/05 PHP
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
js/html光标定位的实现代码
2013/09/23 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
Python中还原JavaScript的escape函数编码后字符串的方法
2014/08/22 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
用python与文件进行交互的方法
2018/03/01 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
统计员岗位职责
2013/11/14 职场文书
知识竞赛拉拉队口号
2014/06/16 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
《穷人》教学反思
2016/02/19 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技