代码段概念

  1. 一个 script 就是一个代码段
  2. 在一个页面中可以有多个代码段
  3. 每一个代码段, 彼此独立的, 如果上面的代码段报错了, 不会影响下一个代码段
  4. referenceError 引用错误
  5. 下面代码段中定义的数据, 在下面的代码段中可以使用

预编译 / 预解析

  1. 预解析期间做了什么

    1. 声明提升 ,var 定义的变量 提升的仅仅是声明, 没有赋值, 强行调用, 返回 undefined;function 声明的函数整体要提升, 提升到代码段的最前面,** 函数是一等公民 **, 同名函数名和变量, 优先同名函数
    2. 如果是函数内部的局部变量, 就提升到函数内部的最前面
    3. var 定义的变量仅仅是提升, 函数提升不仅是声明, 还有赋值
    4. 函数表达式 本质是一个变量
      fun();// 这里会报错, 函数表达式提升 只声明没赋值, 这里 fun 的值是 undefined
      var fun = function(){console.log('fun...')}
    5. 函数也会提升, 如果提升变量名和函数名一样, 只会存在一个名字, 所以函数提升后 同名变量的值就会变成函数
          console.log(v);
      var v = 123;
      function v(){}
      console.log(v); // 输出
      // function v(){}
      // 123
    6. 函数内部没有定义的的变量, 是全局变量
          function fn(){a = 100  //a 在函数内部没有定义  就是全局变量}
      fn()console.log(a) //110

数据存储

1. 栈 - 基本数据类型
1.
2. 堆 - 引用数据类型
1. GO 全局对象
2. VO 变量对象 用来存放当前执行上下文中创建的数据

JS 变量都存储在内存中,而内存给变量开辟了两块存储空间,分别为栈(stack)空间和堆(heap)空间;

栈空间:存放 JS 基本数据类型,通过按值访问,可以直接操作保存在变量中的实际值;

堆空间:存放 JS 引用数据类型,通过对象的引用访问,不可以直接访问堆内存空间中的位置和操作堆内存空间。只能操作对象在栈内存中的引用地

址。

ECG 执行上下文

1. 全局代码执行时就会产生全局的执行上下文, execution context globle
2. 每当调用函数就产生一个局部的执行上下文 EC
3. 执行上下文产生时, 都需要放到一个栈中, 这个就是执行上下文栈 execution context stack
4. 函数调用完毕, 函数的 EC 就要出栈, 当 ECG 执行完毕时, ECG 也要出栈
5. 出入栈 遵循 先进后出 也就是 ECG 先进 最后出来
6. 代码的数据都是在上下文 EC 中去找

1. js 在代码执行时, 会在堆中创建一个全局对象,Globle Object  GO
2. 在浏览器中 这个 GO 就是 window
3. GO 是一个 window , window 是一个全局对象, 对象是属性的无序集合
4. 声明的全局变量 和 在全局代码中写的函数都挂载在 GO 上

JS 代码片段 / 预编译/预解析 /执行上下文/ECG/EC/ECS/GO/VO/AO的更多相关文章

  1. 127个常用的JS代码片段,每段代码花30秒就能看懂(上)

    127个常用的JS代码片段,每段代码花30秒就能看懂(上) JavaScript 是目前最流行的编程语言之一,正如大多数人所说:“如果你想学一门编程语言,请学JavaScript.” FreeCode ...

  2. 常用JS代码片段

    1.隐藏部分数字,如手机号码,身份证号码 1 2 3 function (str,start,length,mask_char){ return str.replace(str.substr(star ...

  3. 【学习笔记】深入理解js原型和闭包(11)——执行上下文栈

    继续上文的内容. 执行全局代码时,会产生一个执行上下文环境,每次调用函数都又会产生执行上下文环境.当函数调用完成时,这个上下文环境以及其中的数据都会被消除,再重新回到全局上下文环境.处于活动状态的执行 ...

  4. js预编译和函数执行

    javascript 执行过程 1.语法检测(有没有基本的语法错误,例如中文,关键字错误...)2.词法分析(预编译) (1)创建全局GO(global object)对象 (2)对var声明的变量进 ...

  5. 还原真实,javascript之预编译 / 预解析

    今天在群里吹水时,有群友提出一个问题.我一看很简单,就立马给出了答案:因为存在变量提升,所以输出undefined.本以为无人反驳,可确招来口诛笔伐.作为写实派的我,一贯以来坚持真实是我的使命,岂能容 ...

  6. PreparedStatement预编译的sql执行对象

    一.预编译,防sql注入 其中,设置参数值占位符索引从1开始:在由sql 连接对象创建 sql执行对象时候传入参数sql语句,在执行对象在执行方法时候就不用再传入sql语句: 数据库索引一般是从1开始 ...

  7. 常用的js代码片段

    1.单选框/手风琴 <script> $(document).ready(function(){ $("dd").on("click",functi ...

  8. Atom编辑器折腾记_(15)JS代码片段补全(插件:javascript-snippets)

    题外话 这款插件就比較重量级了-.用熟悉了写原生JS的效率要提升非常多--并且,不仅支持JS还包括了nodejs snippet javascript-snippets 插件作者: zenorocha ...

  9. 解决js代码中加入alert()就成功执行,不加就不对的问题!

    问题: jquery中的$(document).ready(function(){})中调用两个方法(1)利用ajax请求去后台查图书类别的方法(2)当页面上利用图书类别去查询图书返回页面,让图书类别 ...

  10. 汇总前端最最常用的JS代码片段

    html5选择器 //参数均接收一个合法的css选择器 element = document.querySelector('.foo,.bar');//返回带有foo或者bar样式类的首个元素 ele ...

随机推荐

  1. 固定SRAM地址变量

    IAR: __no_init uint8_t _downflag @0x2001FF00;

  2. JZOJ 5354. 【NOIP2017提高A组模拟9.9】导弹拦截

    题目 如题 分析 第一问很简单, \(dp\) 即可(得先排序) 第二问很经典,最小路径覆盖问题,最大流解决 \(n-Maxflow\) \(Code\) #include<cstdio> ...

  3. PostGIS之地理坐标

    1. 概述 PostGIS 是PostgreSQL数据库一个空间数据库扩展,它添加了对地理对象的支持,允许在 SQL 中运行空间查询 PostGIS官网:About PostGIS | PostGIS ...

  4. pytorch学习笔记三之神经网络

      神经网络¶   1. 概述¶   使用torch.nn包构建神经网络   nn依赖于autograd来定义模型并对其进行微分   nn.Module包含层,以及返回output的方法forward ...

  5. LeetCode算法训练-动态规划

    欢迎关注个人公众号:爱喝可可牛奶 LeetCode算法训练-动态规划 理论知识 动态规划当前状态是由前一个状态推导出来的,而贪心没有状态的转移 动态规划需要借助dp数组,可能是一维也可能是二维的 首先 ...

  6. h5项目自适应字体和宽高。用rem

    已知: 1.浏览器默认的字号是16px,html{font-size: 87.5%;}(16*0.875 = 14px). 2.css中的单位换算:rem 与 px 的换算为 px = rem * 设 ...

  7. listview自定义适配器

    class FruitAdapter(activity: Activity ,val id:Int,data:List<Fruit>):ArrayAdapter<Fruit>( ...

  8. Kotlin学习-函数(表达式,lambda,高阶函数)

    Kotlin中函数 3种表达形式: 一般函数: fun sum(a: Int, b: Int): Int { return a+b } 简化函数为表达式形式: fun sum2(a: Int, b: ...

  9. Hsm状态机init()和dispatch()流程

    (LCA)共同祖先状态:首先找到s(原状态)能处理t(目标状态)的超状态,然后找到t(目标状态)到上一步超状态的退出路径p[]并保存,最后沿着退出路径进入t目标状态. QHsm_dispatch_(Q ...

  10. react 03 组件传值

    一 基础 props: 父传子  单向 import React from 'react'; import ReactDOM from 'react-dom'; import './index.css ...