变量提升

  • 变量提升:是指js代码执行过程中,js引擎把变量的声明和函数的声明提升到代码的开头的“行为”。
  • 变量和函数在代码里的位置是不会变的,而是在编译阶段被js引擎放入内存中。
  • 变量提升后,会给变量设置默认值,undefined。
  • 带来的问题
    • 变量会被覆盖
        foo()   // foo2
      function foo() { console.log('foo1') }
      function foo() { console.log('foo2') }
    • 应该销毁但没有销毁
      function foo() {
    for(var i = 0;i < 10;i++) {}
    console.log(i) //10
    }
    foo()

执行上下文

  • 执行上下文是js执行一段代码时的运行环境
  • 执行上下文的种类
    • 全局执行上下文(在整个页面的生存周期内)
    • 函数执行上下文(调用一个函数的时候,函数体里面的代码被编译,会创建函数执行上下文,函数执行结束,会销毁(一般情况下))
    • eval执行上下文(用的很少)

调用栈

  • 用来管理函数调用关系的ds

作用域

  • 作用域:在程序中定义变量的区域,该区域决定了变量的声明周期
  • 人话: 变量和函数的可访问范围
  • 作用域控制变量和函数的可见性和声明周期
  • 种类:
    • 全局作用域 : 代码中任何地方都可以访问到这个作用域。生命周期最长
    • 函数作用域 : 函数内部定义的变量或函数,并且定义的变量或函数只能在函数内部访问,函数执行结束后,会被销毁。
    • 块级作用域 : 作用块内声明的变量不影响块外面的变量(let 和 const 都可以形成块级作用域 )。
      • e.g
        function foo() {
      var a = 1;
      let b = 2;
      {
      let b = 3;
      var c = 4;
      let d = 5;
      console.log(a);
      console.log(b);
      }
      console.log(b);
      console.log(c);
      console.log(d);
      }
      foo()
      • var 声明的 ,会被放到变量环境里面(es6) es3 放到变量对象里
      • let 声明的, 会被放到词法环境中
      • 在函数的作用域内部,通过let声明的变量并没有被存放到词法环境中

javascript中一些难以理解的专有名词 1(也不是很专有)的更多相关文章

  1. JavaScript中的闭包理解

    原创文章,转载请注明:JavaScript中的闭包理解  By Lucio.Yang 1.JavaScript闭包 在小学期开发项目的时候,用node.js开发了服务器,过程中遇到了node.js的第 ...

  2. javascript中 (function(){})();如何理解?

    javascript中 (function(){})();如何理解? javascript中: (function(){})()是匿名函数,主要利用函数内的变量作用域,避免产生全局变量,影响整体页面环 ...

  3. 关于javascript中闭包的理解

    闭包就是能够读取其他函数内部变量的函数. 在javascript中,只有函数内部的子函数可以读取局部变量,因此,我理解闭包就是定义在一个函数内部的函数. 例子: var f1 = function() ...

  4. 对JavaScript中this的理解

    JavaScript中的this其实没传说中的那么难,也没那么乱. 我们来分析下,this主要是跟它的执行环境有关. 而通常情况下,this都是放在函数体中或可执行的JS代码中(函数体除外). 至于J ...

  5. 对JavaScript中闭包的理解

    在前端开发中闭包是一个很重要的知识点,是面试中一定会被问到的内容.之前我对闭包的理解主要是"通过闭包可以在函数外部能访问到函数内部的变量",对闭包运用的也很少,甚至自己写过闭包自己 ...

  6. 转:对JavaScript中闭包的理解

    关于 const     let      var  总结: 建议使用 let  ,而不使用var,如果要声明常量,则用const. ES6(ES2015)出现之前,JavaScript中声明变量只有 ...

  7. JavaScript 中this 初步理解笔记

    Javascript中函数中的this通常指向的是函数的拥有者,这个拥有者就是上下文执行对象:另外一点需要注意,this只能在javascript函数内部使用.

  8. javascript中的原型理解总结

    经过几天研究查找资料,对原型终于有点理解了,今天就做下总结,不对之处,希望各位能够提出. 1.每一个Javascript对象(null除外)都和另一个对象相关联,“另一个”对象就是我们今天所要总结的原 ...

  9. javascript 中{}和[] 的理解

    下面的一段解释是摘抄的,基本理解正确,做个记录.其实js中数组其实就是对象,typeof(['a', 'b', 'c'])//测试之后结果为 :  "object" 一.{ } 大 ...

  10. 第二话:javascript中闭包的理解

    闭包是什么? 通过闭包,子函数得以访问父函数的上下文环境,即使父函数已经结束执行. OK,我来简单叙述下,先上图. 都知道函数是javascript整个世界,对象是函数,方法是函数,并且js中实质性的 ...

随机推荐

  1. es6的Symbol数据类型

    ES6引入了一种新的原始数据类型Symbol,表示独一无二的值.它是JavaScript语言的第七种数据类型,前六种是:Undefined.Null.布尔值(Boolean).字符串(String). ...

  2. 2023-05-10:给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表 如果在二叉树中,存在一条一直向下的路径 且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,

    2023-05-10:给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表 如果在二叉树中,存在一条一直向下的路径 且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值, ...

  3. docker(一):Develop faster. Run anywhere.

    前言 在进行微服务部署时,首先需要进行部署环境的搭建.目前,Docker 已经成为了微服务部署的主流解决方案之一.Docker 可以帮助我们更快地打包.测试以及部署应用程序,从而缩短从编写到部署运行代 ...

  4. vue全家桶进阶之路13:生命周期

    Vue2的生命周期是指Vue实例从创建.挂载.更新.销毁等各个阶段中所经历的一系列过程.Vue2的生命周期共有8个阶段,分别是: beforeCreate:Vue实例被创建之前的阶段,此时Vue实例的 ...

  5. Django的ModelAdmin自带

    需要自定义数据表中哪些字段可以显示,哪些字段可以编辑,并对数据表中的条目进行排序,同时定义过滤选项.Django的ModelAdmin自带的list_display, list_filter, lis ...

  6. flutter填坑之旅(有状态组件StatefulWidget)

    今天我们来看看flutter的StatefulWidget(有状态组件),最常用就是app 主页的底部导航栏的应用 效果图 首页 关于 我的 statefull-widget-learn .dart ...

  7. drf——登录功能、认证、权限、频率组件(Django转换器、配置文件作用)

    Django转换器.配置文件作用 # django转换器 2.x以后 为了取代re_path int path('books/<int:pk>')--->/books/1---> ...

  8. web自动化01-环境搭建

    1.自动化测试是什么? 借助工具实现 借助代码编写脚本实现  2.自动化测试需要掌握那些? web自动化测试基础 移动端自动化基础 pytest自动化测试框架 po设计模式 数据驱动 日志模块使用 自 ...

  9. Hackathon 代码黑客马拉松采访复盘

    AIGC Hackathon 2023 北京站 我参加了选手采访提纲,这里我感觉有些点可以分享给大家.之前复盘的链接: 下面是采访我的回答内容: 1. 请向大家简单介绍一下自己吧? 子木,社区名称为程 ...

  10. rest-framework 视图类源码分析

    从miminx 类开始,依次有子类RetrieveModelMixin(单个get 请求)) ,ListModelMixin(LIST请求),CreateModelMixin(POST请求),Upda ...