【前端基础进阶系列】学习笔记
来源:互联网 发布:ecu编程 编辑:程序博客网 时间:2024/05/02 00:01
前端基础进阶系列
1. JS变量对象详解
- 执行上下文的生命周期:
- 变量对象创建
- 建立arguments对象。检查当前上下文中的参数,建立该对象下的属性与属性值。
- 检查当前上下文的函数声明,也就是使用function关键字声明的函数。在变量对象中以函数名建立一个属性,属性值为指向该函数所在内存地址的引用。如果函数名的属性已经存在,那么该属性将会被新的引用所覆盖。
- 检查当前上下文中的变量声明,每找到一个变量声明,就在变量对象中以变量名建立一个属性,属性值为undefined。如果该变量名的属性已经存在,为了防止同名的函数被修改为undefined,则会直接跳过,原属性值不会被修改。
- 执行阶段之前,变量对象中的属性都不能访问!但是进入执行阶段之后,变量对象转变为了活动对象,里面的属性都能被访问了,然后开始进行执行阶段的操作。
// demo2function test() { console.log(foo); console.log(bar); var foo = 'Hello'; console.log(foo); var bar = function () { return 'world'; } function foo() { return 'hello'; }}test();/*ƒ foo() { return 'hello'; }undefined"Hello"*/
2. JS详细图解作用域链与闭包
作用域 vs 执行上下文
作用域 —— 代码编译阶段
执行上下文 —— 代码执行阶段作用域 vs 作用域链
- 作用域在编译阶段确定规则,作用域链在执行上下文的创建阶段生成。
- 作用域链是作用域规则的具体实现
作用域链——是由一系列变量对象组成
var a = 20;function test() { var b = a + 10; function innerTest() { var c = 10; return b + c; } return innerTest();}test();
innerTestEC = { VO: {...}, // 变量对象 scopeChain: [VO(innerTest), VO(test), VO(global)], // 作用域链 this: {}}
- 闭包
chrome浏览器认为闭包是 foo,而不是通常我们认为的innerFoo
- 闭包
阅读全文
0 0
- 【前端基础进阶系列】学习笔记
- 前端基础进阶系列
- node学习笔记<进阶系列>
- python基础学习笔记<进阶>
- 【前端学习笔记】JS基础
- 前端基础进阶
- 搜索引擎之阿堂Solr学习笔记系列3(进阶篇:数据库solr搜索基础)
- 静觅小白爬虫及进阶系列学习笔记
- HenCoder Android开发进阶系列学习笔记
- 前端基础学习-css基础笔记
- 前端学习笔记--css基础的基础
- 前端进阶学习之路(二) 基础工具+简单规范
- 【前端学习笔记】JS学习基础
- 学习笔记(C基础+进阶)
- 学习笔记(C基础+进阶)
- 前端学习进阶网站
- 前端学习进阶
- 【前端学习笔记】JQuery事件细节、JQ进阶常用方法
- windows源码编译PHP7.1
- 3D数学 学习笔记(8) 光照
- 用Android Studiod单纯编写java程序
- ListView结合AsyncTask获取数据
- 区块链框架
- 【前端基础进阶系列】学习笔记
- Mount
- NOIP2010第三题 ---接水问题(摘自洛谷题解)
- RGB到HSV色彩空间转换表
- Oracle(1):windows 10 安装与配置
- Linux system 定时及延时任务
- Java
- 笔记:Echarts
- 配置VI-ORB时出现的问题