-
闭包
环境部分:
1. 环境:函数的词法环境( 执行上下文的一部分 )
2. 标识符列表: 函数中用到的未声明的变量
表达式部分:
函数体lexical environment:词法环境,当获取变量或者 this 值时使用。
variable environment:变量环境,当声明变量时使用。
code evaluation state:用于恢复代码执行位置。
Function:执行的任务是函数时使用,表示正在被执行的函数。
ScriptOrModule:执行的任务是脚本或者模块时使用,表示正在被执行的代码。
Realm:使用的基础库和内置对象实例。
Generator:仅生成器上下文有这个属性,表示当前生成器。 -
执行上下文
var b = {}
let c = 1
this.a = 2;要想正确执行它,我们需要知道以下信息:
var 把 b 声明到哪里;
b 表示哪个变量;
b 的原型是哪个对象;
let 把 c 声明到哪里;
this 指向哪个对象。- function关键字开头是函数声明
函数表达式就是 (function(){var a;}()); / (function(){var a;})();
var
let
以下语句会产生let使用的作用域
for;
if
switch;
try/catch/finally。realm ( 国度 领域 范围 )
var iframe = document.createElement('iframe') document.documentElement.appendChild(iframe) iframe.src="javascript:var b = {};" var b1 = iframe.contentWindow.b; var b2 = {}; console.log(typeof b1, typeof b2); //object object console.log(b1 instanceof Object, b2 instanceof Object); //false true
- function关键字开头是函数声明