作用域在函数定义时就已经确定了,执行上下文环境在函数调用时才确定。在全局作用域和函数作用域中会创建执行上下文环境(有闭包存在时,一个作用域存在两个上下文环境也是有的)。函数每调用一次都会产生一个新的执行上下文环境。但是处于活动状态的执行上下文环境只有一个,这是一个压栈出栈的过程。 执行上下文:函数每 ...
分类:
编程语言 时间:
2019-08-28 13:22:40
阅读次数:
106
执行上下文可以理解为当前代码的执行环境 JavaScript中的运行环境大概包括三种: 全局环境:JavaScript代码运行起来会首先进入该环境 函数环境:当函数被调用执行时,会进入当前函数中执行代码 eval(不建议使用,可忽略) 当代码在执行过程中,遇到以上三种情况,都会生成一个执行上下文,放 ...
分类:
其他好文 时间:
2019-08-05 13:48:56
阅读次数:
107
JS函数声明&函数表达式 函数声明 函数表达式 定义函数的方式有两种:函数声明和函数表达式 函数声明 有一个重要的特点:函数声明提升(点击查看),意思是在执行上下文前会读取函数声明,所以可以在函数声明前调用函数 functionName(); //可以在函数声明前就调用 function funct ...
分类:
Web程序 时间:
2019-07-29 00:19:52
阅读次数:
102
深入学习JS执行--创建执行上下文(变量对象,作用域链,this) 一、介绍 本篇继上一篇深入理解js执行--单线程的JS,这次我们来深入了解js执行过程中的执行上下文。 本篇涉及到的名词:预执行,执行上下文,变量对象,活动对象,作用域链,this等 二、预执行 在上一篇说到,在js代码被执行,执行 ...
分类:
Web程序 时间:
2019-07-01 09:16:10
阅读次数:
139
前言 在《JavaScript深入之执行上下文栈》中讲到,当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context)。 对于每个执行上下文,都有三个重要属性: 变量对象(Variable object,VO) 作用域 ...
分类:
编程语言 时间:
2019-06-13 20:02:01
阅读次数:
166
this 指向多变,很多隐蔽的 bug 都缘于它。与此同时,this 强大灵活,如果能熟练驾驭,就会写出更简洁、优雅的代码。 社区上对于 this 的讲解虽然不少,但缺乏统一梳理。 this 相关知识点如下: this 到底指向谁 曾经在面试阿里某重点部门时,面试官从多个角度考察过我对 this 的 ...
分类:
其他好文 时间:
2019-05-15 20:31:53
阅读次数:
159
什么是作用域 就是一块"地盘", 一个代码段所在的区域,它是静态的(相对于上下文对象), 在编写代码时就确定了 作用域分类:全局作用域, 函数作用域, 没有块作用域(ES6有了) 作用域的作用是隔离变量,不同作用域下同名变量不会有冲突 作用域与执行上下文 全局作用域之外,每个函数都会创建自己的作用域 ...
分类:
其他好文 时间:
2019-05-07 21:12:14
阅读次数:
161
1、变量声明方式 ES6变量声明使用let/const,其中最重要的两个特性: >块级作用域 >不再具备变量提升 ES6 ES5 变量提升: ES5-会存在变量提升,没有块级作用域,它的作用域分为两种:一个是全局作用域,另一个是函数作用域; 具体会在后续执行上下文环境中介绍 ...
分类:
其他好文 时间:
2019-04-27 12:56:21
阅读次数:
127
我们知道,每个函数在调用的时候会产生一个执行上下文环境,而这个执行上下文环境中包含了诸如 this 等等信息。即当我们调用函数的时候,内部的 this 已经明确地隐式绑定到了某一个对象上。如果我们希望更换 this 的指向,我们该如何更改? call/apply/bind 这三个函数能够满足我们的需 ...
分类:
移动开发 时间:
2019-04-24 17:48:33
阅读次数:
165
一、bind、call、apply函数的实现 改变函数的执行上下文中的this指向,但不执行该函数(位于Function构造函数的原型对象上的方法) Function.prototype.myBind = function (target) { if (typeof this !== 'functi ...
分类:
编程语言 时间:
2019-04-16 09:25:30
阅读次数:
167