猿问

js变量对象的问题

function foo(a) {

  var b = 2;

  function c() {}

  var d = function() {};


  b = 3;


}


foo(1);

AO = {

    arguments: {

        0: 1,

        length: 1

    },

    a: 1,

    b: undefined,

    c: reference to function c(){},

    d: undefined

}

其中b,d为什么是undefined? 不太懂这个过程唉


慕勒3428872
浏览 561回答 2
2回答

料青山看我应如是

这是 foo函数执行初期的 执行上下文初始化阶段,主要工作是确定作用域内的变量和声明提升。这里确定变量:arguments对象,a,b,c,d。其中 b,c,d 都存在声明提升。b,d 是变量声明提升,初始值即为 undefined。c 是 函数声明提升,初始值即为写的 function c(){}。

素胚勾勒不出你

作用域:大括号内的都是局部变量,外部不可见没有var关键字声明的,作用域提升为全局变量,a、c就是这种情况多问一句,reference是啥
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答