我正在经历this article,这真的很棒。我只想要一些目前正在考虑的问题。
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: { ... }
}
or
函数上下文] 我对JS方面很新。我只是想纠正自己,让你们更清楚......所以我没有错。
答案 0 :(得分:1)
调用函数时,会创建ExecutionContext
。这定义了函数环境中的一个重要部分。
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.这也是指什么。 [它是指全局背景还是功能背景]
this
属性已创建,它取决于函数的调用方式。
myFunction(args)
=>它指的是全球性的
对象......即窗口对象。object.myFunction(args)
=>它会指的是
对象。call() or apply().
的回调此值是第一个
call()/apply().
(new myFunction(1,2,3))
。这是一个值
myFunction.prototype作为原型的空对象。