美文网首页
14-循环索引同步

14-循环索引同步

作者: 仰望_IT | 来源:发表于2019-05-06 21:06 被阅读0次
  • var

    默认情况下是顺序结构, 代码会从上至下的执行, 前面没执行完后面的不能执行
    默认情况下通过var定义的变量, 只要不是定义在函数中都是全局变量
  • 不能同步
      // 不能同步
      for (var i = 0; i < 3; i++){
          function test() {
              console.log(i);
          }
      }
      test(); // 3
    
  • 可以同步
      for (var i = 0; i < 3; i++){
          function test() {
              console.log(i); // 0 1 2
          }
          // 每次循环都立即调用这个函数
          test();
      }
    
      for (var i = 0; i < 3; i++){
          // 使用立即执行的函数
          (function test() {
              console.log(i); // 0 1 2
          })();
      }
    
      for (var i = 0; i < 3; i++){
          // 使用立即执行的函数, 并且将i的值传给这个函数
          (function test(index) {
              console.log(index); // 0 1 2
          })(i);
      }
    

  • let

在ES6中如果在循环中通过let定义的变量, 那么这个变量是一个局部变量
    var list = [];
    // 这里的i是全局变量
    for (var i = 0; i < 3; i++){
        var fn = function test() {
            console.log(i);
        };
        list.push(fn);
    }
    // console.log(i); // 3
     list[0](); // 3
     list[1](); // 3
     list[2](); // 3
  • 注意点: 由于 i 是局部变量, 所以每次执行完循环体都会重新定义一个 i 变量
    let list = [];
    // 这里的i是局部变量
    // 注意点: 由于i是局部变量, 所以每次执行完循环体都会重新定义一个i变量
    for (let i = 0; i < 3; i++){
        let fn = function test() {
            console.log(i);
        };
        list.push(fn);
    }
    // console.log(i); // i is not defined
     list[0](); // 0
     list[1](); // 1
     list[2](); // 2
  • 注意点: 在ES6中由于 {} 是块级作用域, 所以只要在块级作用域中定义了一个函数
  •     并且这个函数用到了块级作用域中的数据, 那么这个函数就是闭包
      for (let i = 0; i < 3; i++){
          // 注意点: 在ES6中由于{}是块级作用域, 所以只要在块级作用域中定义了一个函数
          //         并且这个函数用到了块级作用域中的数据, 那么这个函数就是闭包
          function test() {
              console.log(i);
          }
      }
      // 由于每次循环都会新定义一个变量, 后定义的会覆盖先定义的
      test(); // 2
    

相关文章

  • 14-循环索引同步

    var 不能同步 // 不能同步 for (var i = 0; i < 3; i++){ func...

  • 关于Oracle cursors exceeded

    最近一个项目使用了Lucene,其中创建索引后需要同步数据库表,循环2000个id同步数据时出现 ORA-0100...

  • JavaScript 异步循环 - async/await 的使

    如何以顺序或并行方式运行异步循环? 在对循环进行异步处理之前,我想提醒您如何编写经典的同步循环。 同步循环 很久以...

  • for in for of 的区别

    for in 循环的是索引for of 循环的值 for in遍历数组的索引为字符串数字类型,不可以进行...

  • ActiveMQ

    1. 同步索引库分析 方案一:在taotao-manager中,添加商品的业务逻辑中,添加一个同步索引库的业务逻辑...

  • Javascript里的常用循环

    1. for :自定义循环 for循环,根据数组的length手动设置循环条件 2. for in :循环索引 ...

  • 冒泡排序

    思考 外层循环控制比较次数,内层循环实现(索引)元素交换 注意循环边界 代码

  • python for 循环索引

  • JS基础遍历方法

    定义一个数字数组 for循环 for...in循环 for...of循环: 不需要通过索引访问 while循环: ...

  • vue循环与显示

    vue循环 v-for循环普通数组 数组索引值 循环对象数组 循环对象,值(1,ts,man)键(id,name,...

网友评论

      本文标题:14-循环索引同步

      本文链接:https://www.haomeiwen.com/subject/vncjoqtx.html