• 关于js代码执行顺序


    上网查了一下关于这个方面的资料,大部分都是关于两个script标签中的js代码和变量以及函数提升方面的知识。

    1、两个script标签

    <script>
        alert("我是代码块一");
        alert(test); //undefined
        var test = "str1"l
    </script>
    
    <script>
        alert("我是代码块二");
        alert(test); //str1
    </script>
    

    特点:两代码块执行独立,变量共享;

    关于变量和函数提升方面,已了解。

    2.关于我自己的困惑,先贴上一段代码:

    var a = [];
    for (let i = 0; i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6](); // 6
    

      为什么会输出6,

     在我看来,函数调用的时候才对里面的变量进行操作,而此时,外部的i++操作已经完成了,而且i为全局变量的话,值是改变的,所以当操作i的时候,外部的i已经被赋值为10;即函数定义过程中i的被引用,但是i的值还在改变,所以最后调用的时候,依旧是全局的 i ,但是其值已发生改变。而let使用的时候,是局部的 i,因此函数调用的时候,引用为 局部 的 i,因此调用的时候,i值为for循环 每次被赋值的 i。

  • 相关阅读:
    CSP-S 2021游记
    logback-spring.xml配置
    springboot编译的命令
    Springboot 常用注解
    logback如何配置springboot框架
    如何使用IDEA快速创建一个springboot项目
    slf4j、log4j、 logback关系详解和相关用法
    SSM整合及Maven pom.xml
    OO第四单元总结
    OO第三单元总结
  • 原文地址:https://www.cnblogs.com/Yoriluo/p/7459565.html
Copyright © 2020-2023  润新知