JavaScript上下文(Context)是指代碼執(zhí)行時的運行環(huán)境,包括全局上下文和局部上下文。全局上下文是在瀏覽器中訪問JavaScript時自動創(chuàng)建的上下文,而局部上下文則是由函數調用時創(chuàng)建的上下文。
例如,當我們在瀏覽器控制臺中輸入以下代碼:
console.log('Hello, World!');
輸出會是 "Hello, World!",這是因為瀏覽器在執(zhí)行這一行代碼時默認在全局上下文中執(zhí)行。
當我們定義一個函數時,在函數內部的代碼就是在局部上下文中執(zhí)行,如下面的例子:
function myFunction() { var message = 'Hello, World!'; console.log(message); } myFunction();
輸出同樣是 "Hello, World!",但是這次輸出是在 myFunction() 的上下文中執(zhí)行的。
上下文有一定的優(yōu)先級規(guī)則。JavaScript 代碼總是從當前上下文開始向外查找變量和函數,直到找到為止。如果在當前上下文中沒有找到,則會繼續(xù)向外查找,直到找到為止。
例如,在以下代碼中:
var message = 'Hello, World!'; function myFunction() { console.log(message); } myFunction();
myFunction() 中沒有定義message變量,但是它會向外查找并找到全局上下文中的message變量,并輸出 "Hello, World!"。
當然,當我們使用 var、let 或 const 定義一個變量時,它會被存儲在當前上下文中。因此,在以下代碼中:
function myFunction() { var message = 'Hello, World!'; console.log(message); } myFunction(); console.log(message);
當在函數之外嘗試輸出 message 變量時,會發(fā)生錯誤,因為 message 變量只存在于 myFunction() 的上下文中。
總之,JavaScript 上下文是代碼在執(zhí)行期間的運行環(huán)境。全局上下文和局部上下文都可以通過代碼優(yōu)先級規(guī)則訪問變量和函數,使我們能夠編寫更結構化和模塊化的代碼。