JS变量对象

2019-12-10  本文已影响0人  鲁女女

当调用一个函数时,一个新的执行上下文就会被创建,每一个执行上下文都有3个基本属性:变量对象,作用域链、this
全局上下文的变量对象,只有在一个执行上下文中才能被激活,它的各种属性就可以被访问。
全局上下文变量对象初始化是一个window对象,全局对象window是一个预定义的对象,作为JS全局变量(全局属性)和全局函数(全局方法)的占位符。
通过全局window对象可以访问所有预定义对象。变量对象是一个键值对的形式。
函数上下文的变量对象:
函数执行上下文的执行过程:
1. 进入执行上下文,不会执行代码,会激活所有的变量对象(最少有一个arguments对象)
2. 函数声明:由一个名称和一个对应函数值组成的一个变量对象属性被创建,如果变量对象已经存在了相同的属性。则就会被替换。
3. 变量名称和对应值(undefined)组成的变量对象属性被创建,如果变量名称与已经声明形参或函数相同,则变量声明不会覆盖已有的这类属性。

//全局执行上下文的变量对象练习
console.log(a); //undefined
var a = 1;
f();
function f() {
    alert("f"); // 弹出"f"
}
var b = 2;

 //以上代码执行如下;
window.a = undefined;
window.b = undefined;
window.f = function(){
  alert("f");
}
console.log(a); // undefined
a = 1;
f();
b = 2;

//以下来分析函数的执行上下文的变量对象
function f1(a,b) {
     console.log(a); // 1
     var c = 2;
     function fun1() {
          alert("fun1");
     }
     var  a = 5;
     console.log(a); // 5
}
f1(1,2);

//变量对象的执行过程是
function  f1(a,b){
    VO = {
        arguments:{
            a:1,
            b:2
         },
         fun1:function(){
               alert("fun1");
          }
          c:undefined;
          a:undefined;
    }
    console.log(a); // 1
    c = 2;
    a = 5;
    console.log(a); // 5
}
上一篇 下一篇

猜你喜欢

热点阅读