▌this
- this可以的調用
外層物件的變數
,但是不可以調用超過一層的物件
。如果需要,必須用self來調用。
var obj={
name:"neo",
outer:function(){
var self=this;
function inner(){
console.log(self.name);
}
inner();
},
};
obj.outer(); // neo
- this是一種keyword,但不是變數
▌封包(closure)
- JS函式執行的scope chain用的是在他們
定義時生效的chain
- 雖然inner被執行的時候checkscope()已經消失了,可是當inner()被定義的時候,他就是接收了local scope,因此扔然會輸出local scope
var scope="global scope";
function checkscope(){
var scope="local scope";
function inner(){
return scope;
}
return inner;
}
console.log(checkscope()()); //local scope
▌巢狀函式(nested)
內部的函式可以存取外部的參數和變數(再多層也可以)
function outer(){
var a=12;
function inner(){
function very_inner(){
console.log(a)
}
very_inner();
}
inner();
}
outer();
// 會回傳12
沒有留言:
張貼留言