Javascript 执行上下文-创建和激活阶段

Javascript 执行上下文-创建和激活阶段,javascript,Javascript,我经历了这一切,真的很好。我只想问一些我脑海中正在思考的问题 function foo(i) { var a = 'hello'; var b = function privateB() { }; function c() { } } foo(22); 调用foo(22)时,创建阶段如下所示: fooExecutionContext = { variableObject: { arguments: {

我经历了这一切,真的很好。我只想问一些我脑海中正在思考的问题

function foo(i) {
    var a = 'hello';
    var b = function privateB() {

    };
    function c() {

    }
}

foo(22);
调用foo(22)时,创建阶段如下所示:

fooExecutionContext = {
    variableObject: {
        arguments: {
            0: 22,
            length: 1
        },
        i: 22,
        c: pointer to function c()
        a: undefined,
        b: undefined
    },
    scopeChain: { ... },
    this: { ... }
}
  • 为什么长度是1
  • scopeChain键包含什么
  • 这也意味着什么。[它是指全局上下文
    还是功能上下文]
  • 有人能给我指一下关于同一主题的另一个资源和我可以尝试的例子吗

  • 我对JS这方面的事情很陌生。我只是想纠正我自己,让你们更清楚。。。所以我没有错。

    调用函数时,会创建一个
    执行上下文。这在函数的环境中定义了很大一部分

    1.为什么长度是1。

    现在让我们看看您的函数,
    arguements
    属性被创建。此对象包含长度(即传递给函数的参数数)

    现在让我们看看下面的例子

    function myFun1(a,b){
         function myFunc2(){
             alert("hello");
         }
    }
    
    myFun1(10,20);
    
    myFun1中的ExecutionContext

    ExecutionContext: {
          variableObject: {
            arguments: {
               0: '10', 1: '20', 
               length: 2
           }
         }
    }
    
    2.这也指什么。[它是指全局上下文还是函数上下文]

    此属性是创建的,它取决于调用函数的方式

  • 常规函数**
    myFunction(args)
    =>它将引用全局函数 对象i、 e窗口对象
  • 对象方法
    Object.myFunction(args)
    =>它将引用 反对
  • 调用()或应用()的回调。
  • 此值是第一个值
    call()/apply()的参数。
  • 作为构造函数
    (新的myFunction(1,2,3))
    。它的价值是 以myFunction.prototype作为原型的空对象

  • 一点以后我就不看书了。真的吗@亚历山大:我对JS方面的事情很陌生。我只是想纠正我自己,让你们更清楚。。。所以我没有错。