代码段概念

  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. js实现一二级域名共享cookie

    前言 最近接手的项目中 ,有人反馈了一个问题,说是在访问网站并登录后,登录成功有登录信息,但是刷新页面后重定向到了登录页面,让从新登录. 打开 goole 调试页面,查看 cookie 时发现存储的相 ...

  2. SpringMVC的常用注解、参数绑定、转发与重定向

    SpringMvc的常用注解 @RequestMapping() SpringMvc通过@RequestMapping注解将URL请求与业务的方法进行映射,在控制器的类定义处定义方法处都可以添加@Re ...

  3. NETAPP FAS2720初始化配置

    配置前准备 1.管理地址(必须)3个:1个集群管理地址,2个节点管理地址2.SP地址2个:2个底层管理地址,相当于服务器BMC地址,配置完成后可以远程进行系统重装等操作3.DNS地址:使用CIFS需要 ...

  4. NETAPP硬盘更换

    netapp硬盘新增 一.找到坏盘,插上新盘# 1.登陆到想要点亮的硬盘相对应的控制器上,并进去高级模式. priv set advanced 2.利用disk show -v 查看想要点亮的硬盘名字 ...

  5. Vulhub 漏洞学习之:Aria2

    Vulhub 漏洞学习之:Aria2 目录 Vulhub 漏洞学习之:Aria2 1 Aria2 任意文件写入漏洞 1.1 漏洞利用 1 Aria2 任意文件写入漏洞 Aria2是一个命令行下轻量级. ...

  6. 副三角形行列式转成上(下)三角形行列式为什么依次对换而不用第n行直接对换首行,第n-1行直接对换次行

    副三角形行列式转成上(下)三角形行列式为什么依次对换而不用第n行直接对换首行,第n-1行直接对换次行 前言:重在记录,可能出错. 1. 简而言之,可以用第n行直接对换首行,第n-1行直接对换次行,直到 ...

  7. 洛谷P2205 [USACO13JAN]Painting the Fence S

    题目 https://www.luogu.com.cn/problem/P2205 思路 刷水题真解压 差分就完事了 值得注意的一些东西:像这种和数轴或者坐标相关的题,还有扫描线题,一定要注意区间的开 ...

  8. httpRunner使用汇总

    接口测试框架Python:Requests.HttpRunner 文章目录 环境准备 录制接口 生成用例 运行用例 设置变量 提取响应字段 hook机制 用例分层 用例参数化 报告 性能locust ...

  9. SpringMVC请求与响应

    请求 知识点1:@RequestParam 名称 @RequestParam 类型 形参注解 位置 SpringMVC控制器方法形参定义前面 作用 绑定请求参数与处理器方法形参间的关系 相关参数 re ...

  10. Git 提交和拉取服务器最新版本代码方法

    1.  客户端提交: 方法1: git add --all  或   git add  文件1  文件2  ... git commit -m '提交备注信息' git push 方法2: git a ...