/*
变量升级 预处理
*/
/*
js引擎在代码正式执行之前会做一个预处理的工作:
1.收集变量
2.收集函数
依据:
var 将var后边的变量定义但不赋值 var username=undefined;
function(){}
*/
console.log(username); //答案:underfined
var username='kobe';
console.log(username) //kobe fun(); //答案:正常执行函数
function fun(){
console.log('fun()');
}
/*
作用域:作用域是在代码定义的时候产生的
//执行上下文 执行上下文对象(this) 执行上下文(excute context) EC
理解:代码执行的环境
时机(产生时):代码正式执行之前会进入到执行环境
工作:
1.创建变量对象:
1)变量
2)函数及函数的参数
3)全局:window
4)局部:抽象的但是确实存在
2.确认this的指向
1)全局:this --->window
2)局部:this --->调用其的对象
3.创建作用域链
父级作用域链+当前的变量对象
4.扩展
ECobj={
变量对象:{变量,函数,函数的形参}
scopeChain(作用域链):父级作用域链+当前的变量对象
this:{window || 调用其的对象}
}
*/

  

11. 变量提升 && 执行上下文的更多相关文章

  1. 深入理解JavaScript系列(11):执行上下文(Execution Contexts)

    简介 从本章开始,我将陆续(翻译.转载.整理)http://dmitrysoshnikov.com/网站关于ECMAScript标标准理解的好文. 本章我们要讲解的是ECMAScript标准里的执行上 ...

  2. SQL Server安全(6/11):执行上下文与代码签名(Execution Context and Code Signing)

    在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Se ...

  3. 原型模式故事链(4)--JS执行上下文、变量提升、函数声明

    上一章:JS的数据类型 传送门:https://segmentfault.com/a/11... 好!话不多少,我们就开始吧.对变量提升和函数声明的理解,能让你更清楚容易的理解,为什么你的程序报错了~ ...

  4. js中的函数提升和变量提升

    变量提升和函数提升: 就是将变量声明或者函数全部代码提升到当前作用域(全局作用域或函数作用域)最开始的部分. JavaScript中函数域为最小域范围:for循环.while循环.if语句.switc ...

  5. JS进阶之---执行上下文,变量对象,变量提升

    一.结构顺序大体介绍 JavaScript代码的整个执行过程,分为两个阶段,代码编译阶段与代码执行阶段. 编译阶段由编译器完成,将代码翻译成可执行代码,这个阶段作用域规则会确定. 执行阶段由引擎完成, ...

  6. 深入学习JS执行--创建执行上下文(变量对象,作用域链,this)

    一.介绍 本篇继上一篇深入理解js执行--单线程的JS,这次我们来深入了解js执行过程中的执行上下文. 本篇涉及到的名词:预执行,执行上下文,变量对象,活动对象,作用域链,this等 二.预执行 在上 ...

  7. 【进阶1-2期】JavaScript深入之执行上下文栈和变量对象(转)

    这是我在公众号(高级前端进阶)看到的文章,现在做笔记 https://mp.weixin.qq.com/s/hZIpnkKqdQgQnK1BcrH6Nw 阅读笔记 JS是单线程的语言,执行顺序肯定是顺 ...

  8. 执行上下文--变量、函数、this

    原文地址:https://www.xingkongbj.com/blog/js/execution-context.html JavaScript 中的执行上下文和调用栈 ES6 变量作用域与提升:变 ...

  9. js执行上下文栈和变量对象

    JavaScript执行上下文栈和变量对象 JS是单线程的语言,执行顺序肯定是顺序执行,但是JS 引擎并不是一行一行地分析和执行程序,而是一段一段地分析执行,会先进行编译阶段然后才是执行阶段. 例子一 ...

随机推荐

  1. Delphi 转圈 原型进度条 AniIndicator 及线程配合使用

    Delphi FMX 转圈 原型进度条 progress AniIndicator TAniIndicator TFloatAnimation VCL下也有转圈菊花进度条 TActivityIndic ...

  2. 反向索引(Inverted Index)

    转自:http://zhangyu8374.iteye.com/blog/86307 反向索引是一种索引结构,它存储了单词与单词自身在一个或多个文档中所在位置之间的映射.反向索引通常利用关联数组实现. ...

  3. 用SSIS包导入数据

    创建一个简单ETL包.打开 Step 1:创建新的Integration Services项目 在开始菜单中找到SQL Server Data Tools并打开,在Microsoft SQL Serv ...

  4. render tree与css解析

    浏览器在构造DOM树的同时也在构造着另一棵树-Render Tree,与DOM树相对应暂且叫它Render树吧,我们知道DOM树为javascript提供了一些列的访问接口(DOM API),但这棵树 ...

  5. SpringJdbc 【springjdbc的使用方法】

    1 什么是springjdbc spring对jdbc的封装 2 使用SpringJdbc的编程步骤 2.1 导包 spring-jdbc : springjdbc的包 mysql : MySQL的驱 ...

  6. ubuntu16.04 安装opencv3.4

    1.去官网下载opencv,在本教程中选用的时opencv3.4.1,其他版本的配置方法异曲同工. 下载链接http://opencv.org/releases.html,选择sources版本 2. ...

  7. javascript 基础练习 做Bingo图

    ---恢复内容开始--- <!DOCTYPE html><html>    <head>        <meta charset="utf-8&q ...

  8. MySQL介绍与安装

    mysql介绍 #mysql就是一个基于socket编写的C/S架构的软件 #客户端软件 mysql自带:如mysql命令,mysqldump命令等 python模块:如pymysql 数据库管理软件 ...

  9. cs231n knn

    # coding: utf-8 # In[19]: import random import numpy as np from cs231n.data_utils import load_CIFAR1 ...

  10. epoll聊天室的实现

    1.服务端 a. 支持多个用户接入,实现聊天室的基本功能 b. 使用epoll机制实现并发,增加效率 2. 客户端 a. 支持用户输入聊天消息 b. 显示其他用户输入的信息 c. 使用fork创建两个 ...