首頁  >  文章  >  web前端  >  詳解JavaScript之作用域

詳解JavaScript之作用域

coldplay.xixi
coldplay.xixi轉載
2020-07-15 17:12:132197瀏覽

詳解JavaScript之作用域

作用域是可存取變數的集合。

JavaScript 作用域

在 JavaScript 中, 物件和函數同樣也是變數。

在 JavaScript 中, 作用域為可存取變量,對象,函數的集合。

JavaScript 函數作用域: 作用域在函數內修改。

JavaScript 局部作用域

變數在函數內聲明,變數為局部作用域。

局部變數:只能在函數內部存取。

// 此处不能调用 carName 变量
function myFunction() {
  var carName = "Volvo";
  // 函数内可调用 carName 变量
}

因為局部變數只作用於函數內,所以不同的函數可以使用相同名稱的變數。

局部變數在函數開始執行時創建,函數執行完後局部變數會自動銷毀。

JavaScript 全域變數

變數在函數外定義,即為全域變數。

全域變數有 全域作用域: 網頁中所有腳本和函數皆可使用。

var carName = " Volvo";
 
// 此处可调用 carName 变量
function myFunction() {
  // 函数内可调用 carName 变量
}

如果變數在函數內沒有宣告(沒有使用 var 關鍵字),則變數為全域變數。

以下實例中 carName 在函數內,但是為全域變數。

// 此处可调用 carName 变量
 
function myFunction() {
  carName = "Volvo";
  // 此处可调用 carName 变量
}

JavaScript 變數生命週期

JavaScript 變數生命週期在它宣告時初始化。

局部變數在函數執行完畢後銷毀。

全域變數在頁面關閉後銷毀。

函數參數

函數參數只在函數內作用,是局部變數。

HTML 中的全域變數

在 HTML 中, 全域變數是 window 物件: 所有資料變數都屬於 window 物件。

//此处可使用 window.carName
 
function myFunction() {
  carName = "Volvo";
}

你知道嗎?

你的全域變量,或是函數,可以覆寫 window 物件的變數或函數。
局部變量,包括 window 物件可以覆寫全域變數和函數。

補充

ES6 中的let 關鍵字

let 允許你宣告一個作用域被限制在區塊級中的變數、語句或表達式。與var關鍵字不同的是,它所宣告的變數只能是全域或整個函數區塊的。

let 語法:

let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];

let 宣告的變數只在其宣告的區塊或子區塊中可用,這一點,與var 相似。二者之間最主要的差異在於 var 宣告的變數的作用域是整個封閉函數。

letvar 的區別程式碼實例:

function varTest() {
 var x = 1;
 if (true) {
  var x = 2; // 同样的变量!
  console.log(x); // 2
 }
 console.log(x); // 2
}

function letTest() {
 let x = 1;
 if (true) {
  let x = 2; // 不同的变量
  console.log(x); // 2
 }
 console.log(x); // 1
}

相關學習推薦:javascript影片教學

以上是詳解JavaScript之作用域的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除