1. 程式人生 > 其它 >JS作用域及作用域鏈

JS作用域及作用域鏈

JavaScript 函式作用域

在 JavaScript 中有兩種作用域型別:

  • 區域性作用域
  • 全域性作用域

JavaScript 擁有函式作用域:每個函式建立一個新的作用域。

作用域決定了這些變數的可訪問性(可見性)。

函式內部定義的變數從函式外部是不可訪問的(不可見的)。

全域性 JavaScript 變數

函式之外宣告的變數,會成為全域性變數。

全域性變數的作用域是全域性的:網頁的所有指令碼和函式都能夠訪問它。

// js 作用域就是程式碼名字(變數)在某個範圍內起作用和效果

// 全域性作用域,在整個script標籤裡,或者在一個單獨的JS檔案 // var num = 10; // console.log(num); // function fn(){ // // 區域性作用域 在函式內部起作用 // var num = 20; // console.log(num); // } // fn(); // 1,全域性變數 // 在全域性變數作用域下var宣告的變數 // 不使用var宣告變數也是全域性變數 var num = 20; console.log(num); // 2.區域性變數

區域性 JavaScript 變數

在 JavaScript 函式中宣告的變數,會成為函式的區域性變數。

區域性變數的作用域是區域性的:只能在函式內部訪問它們。

由於只能在函式內部識別區域性變數,因此能夠在不同函式中使用同名變數。

在函式開始時會建立區域性變數,在函式完成時會刪除它們。

// 函式內部直接var宣告 // 函式的形參也是區域性變數 function fn(arw){ var num1 = 30; num2 = 40; console.log(num1) } fn(); console.log(num2) // console.log(arw) // 塊級作用域就是用花括號闊起來的 if{} for{} // 作用域鏈:內部函式訪問外部函式的變數,採取的是鏈式查詢的方式來決定取那個值 這種結果我們稱為作用域鏈 var num = 10;
function fn(){ var num = 15;
function fun(){ console.log(num); } fun(); } fn();