小说网站推广方式,如何提高用户和网站的互动性,如何增加网站权重,深圳宝安区很穷吗1、进入执行上下文 当进入执行上下文(代码执行之前)时#xff0c;VO里已经包含了下列属性(前面已经说了)#xff1a; 函数的所有形参(如果我们是在函数执行上下文中) — 由名称和对应值组成的一个变量对象的属性被创建#xff1b;没有传递对应参数的话#xff0c;那么由名称…1、进入执行上下文 当进入执行上下文(代码执行之前)时VO里已经包含了下列属性(前面已经说了) 函数的所有形参(如果我们是在函数执行上下文中) — 由名称和对应值组成的一个变量对象的属性被创建没有传递对应参数的话那么由名称和undefined值组成的一种变量对象的属性也将被创建。 所有函数声明(FunctionDeclaration, FD) —由名称和对应值函数对象(function-object)组成一个变量对象的属性被创建如果变量对象已经存在相同名称的属性则完全替换这个属性。 所有变量声明(var, VariableDeclaration) — 由名称和对应值undefined组成一个变量对象的属性被创建如果变量名称跟已经声明的形式参数或函数相同则变量声明不会干扰已经存在的这类属性。 function test(a, b) { var c 10; function d() {} var e function _e() {}; (function x() {});}test(10); // call当进入带有参数10的test函数上下文时AO表现为如下 AO(test) { a: 10, b: undefined, c: undefined, d: reference to FunctionDeclaration d e: undefined}; AO里并不包含函数“x”。这是因为“x” 是一个函数表达式(FunctionExpression, 缩写为 FE) 而不是函数声明函数表达式不会影响VO。2、执行代码 alert(x); // functionvar x 10;alert(x); // 10x 20;function x() {};alert(x); // 20为什么第一个alert “x” 的返回值是function而且它还是在“x” 声明之前访问的“x” 的为什么不是10或20呢因为根据规范函数声明是在当进入上下文时填入的 同意周期在进入上下文的时候还有一个变量声明“x”那么正如我们在上一个阶段所说变量声明在顺序上跟在函数声明和形式参数声明之后而且在这个进入上下文阶段变量声明不会干扰VO中已经存在的同名函数声明或形式参数声明因此在进入上下文时VO的结构如下 VO {};VO[x] reference to FunctionDeclaration x// 找到var x 10;// 如果function x没有已经声明的话// 这时候x的值应该是undefined// 但是这个case里变量声明没有影响同名的function的值VO[x] the value is not disturbed, still function转载于:https://www.cnblogs.com/ftxc/p/8404969.html