執行上下文
範圍:一段或者乙個函式
全域性:變數定義、函式宣告 (一段)
函式:變數定義、函式宣告、this、arguments (函式)
ps:注意「函式宣告」和「函式表示式」的區別
console.log(a);
var a = 100;
fn('zhangsan');
function fn(name)
this
this要在執行是才能確認值,定義是無法確認
var a =
}a.fn(); // this === a
a.fn.call(); //this ====
var fn1 = a.fn;
fn1(); //this === window
作為建構函式執行
function foo(name)
var f = new foo('zhangsan');
作為物件屬性執行
var obj =
}obj.printname;
作為普通函式執行
function fn()
fn();
function fn1(name, age)
fn1.call(, 'zhangsan', 20);
作用域沒有塊級作用域
只有函式和全域性作用域
作用域鏈
閉包閉包的使用場景
函式作為返回值
function f1()
}//f1得到乙個函式
var f1 = f1();
var a = 200;
f1();
函式作為引數傳遞
作用域與閉包
變數存在並產生作用的環境上下文。在es5規範中只有兩種作用域 函式可以巢狀,而每個函式都有自己的作用域,當進入乙個函式的時候,函式環境就會被壓入乙個環境棧當中,當函式執行完畢之後又會出棧,將控制權轉交給外面一層的函式。內部呼叫外部 var a 3 function add add console.l...
作用域 閉包
1.js執行順序 語法分析 預編譯 先生成go物件 1.函式執行生成ao物件 2.形參和變數作為ao物件的鍵名,鍵值是undefined 3.實參賦值給形參 4.在函式中找到函式宣告,把函式作為ao物件的屬性名,屬性值為函式體 執行js 作用域 變數作用範圍 1.作用域 變數作用範圍 1 函式作用域...
JS作用域與閉包
vo ao 的解釋 1.作用域 es5中只有全域性作用域和函式作用域,我們都知道他沒有塊級作用域。es6中多了乙個let,他可以保證外層塊不受內層塊的影響。即內層塊形成了乙個塊級作用域,這是let的乙個特點。var a 1 function f1 f2 f1 2,1,2 上面的 有三個執行上下文環境...