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 22 jQuery
jQuery实现动态删除LI的方法
May 30 jQuery
基于jQuery封装的分页组件
Jun 26 jQuery
jquery实现回车键触发事件(实例讲解)
Nov 21 jQuery
jquery中done和then的区别(详解)
Dec 19 jQuery
用jquery获取select标签中选中的option值及文本的示例
Jan 25 jQuery
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
使用jquery模拟a标签的click事件无法实现跳转的解决
Dec 04 jQuery
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
jquery实现下载图片功能
Jul 18 jQuery
jquery传参及获取方式(两种方式)
Feb 13 jQuery
jquery实现抽奖功能
Oct 22 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生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
php学习笔记之面向对象
2014/11/08 PHP
PHP中防止SQL注入方法详解
2014/12/25 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
python各种语言间时间的转化实现代码
2016/03/23 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
Python数据抓取爬虫代理防封IP方法
2018/12/23 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
党校学习思想汇报
2014/01/06 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
反四风对照检查材料
2014/09/22 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
分享一些Java的常用工具
2021/06/11 Java/Android
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL
MySQL三种方式实现递归查询
2022/04/18 MySQL