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实现拼图小游戏(实例讲解)
Jul 24 jQuery
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
jQuery中.attr()和.data()的区别分析
Sep 03 jQuery
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 jQuery
jQuery ajax调用webservice注意事项
Oct 08 jQuery
Angular5中调用第三方库及jQuery的添加的方法
Jun 07 jQuery
jQuery实现网页拼图游戏
Apr 22 jQuery
基于 jQuery 实现键盘事件监听控件
Apr 04 jQuery
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
May 27 jQuery
jQuery实时统计输入框字数及限制
Jun 24 jQuery
jQuery实现查看图片功能
Dec 01 jQuery
jQuery实现简单轮播图效果
Dec 27 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 设计模式之 工厂模式
2008/12/19 PHP
PHP学习笔记之二
2011/01/17 PHP
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
jQuery :first选择器使用介绍
2013/08/09 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
Python Logging 日志记录入门学习
2018/06/02 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
python实现证件照换底功能
2019/08/20 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
Python三维绘图之Matplotlib库的使用方法
2020/09/20 Python
投资建议书模板
2014/05/12 职场文书
特教教师先进事迹
2014/05/21 职场文书
公司授权委托书
2014/10/17 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书