JavaScript上下文(Context)是指代碼執行時的運行環境,包括全局上下文和局部上下文。全局上下文是在瀏覽器中訪問JavaScript時自動創建的上下文,而局部上下文則是由函數調用時創建的上下文。
例如,當我們在瀏覽器控制臺中輸入以下代碼:
console.log('Hello, World!');
輸出會是 "Hello, World!",這是因為瀏覽器在執行這一行代碼時默認在全局上下文中執行。
當我們定義一個函數時,在函數內部的代碼就是在局部上下文中執行,如下面的例子:
function myFunction() { var message = 'Hello, World!'; console.log(message); } myFunction();
輸出同樣是 "Hello, World!",但是這次輸出是在 myFunction() 的上下文中執行的。
上下文有一定的優先級規則。JavaScript 代碼總是從當前上下文開始向外查找變量和函數,直到找到為止。如果在當前上下文中沒有找到,則會繼續向外查找,直到找到為止。
例如,在以下代碼中:
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 變量時,會發生錯誤,因為 message 變量只存在于 myFunction() 的上下文中。
總之,JavaScript 上下文是代碼在執行期間的運行環境。全局上下文和局部上下文都可以通過代碼優先級規則訪問變量和函數,使我們能夠編寫更結構化和模塊化的代碼。