zoukankan      html  css  js  c++  java
  • 为什么var可以重复声明

    总结自:https://blog.csdn.net/DurianPudding/article/details/87953939

    一言以蔽之:编辑器会在作用域判断这是重名声明时,忽略var直接赋值

    首先说明JS代码运行时三者的作用:

    引擎负责整个代码的编译以及运行

    编译器则负责词法分析、语法分析、代码生成等工作

    作用域负责维护所有的标识符(变量)。

    例:

    var a = 2;
    var a = 3;
    a = 4;
    alert(a); // 4

    重复声明时:首先,编译器对代码进行分析拆解,当遇见var a,则询问作用域是否已存在叫a的变量,若不存在,则要求作用域声明一个新的变量a,若已存在,则忽略var继续向下编译

    赋值时:引擎遇见a=2时同样会询问在当前的作用域下是否有变量a。若存在,则将a赋值为2;若不存在,则顺着作用域链向上查找,若最终找到了变量a则将其赋值2,若没有找到,则招呼作用域声明一个变量a并赋值为2(这就是为什么第二段代码可以正确执行且a变量为全局变量的原因,当然,在严格模式下JS会直接抛出异常:a is not defined)。

  • 相关阅读:
    0705. Design HashSet (E)
    VMware简单使用
    Git笔记
    初识MyBatis
    数据库连接池配置 testOnBorrow
    Redis list操作命令
    文件/目录对比:diff命令
    可用于区块链的共识算法
    分布式一致性算法,你确定不了解一下?
    Jmeter文件下载测试
  • 原文地址:https://www.cnblogs.com/yanze/p/11450993.html
Copyright © 2011-2022 走看看