在 JavaScript 中分配變量、全局變量和作用域(let、var、const)
讓 , var, 和 const 都是為變量賦值的 JavaScript 語句。
他們的行為可能會有所不同,具體取決於方式和在哪裡 它們在您的代碼中使用 - 請繼續閱讀以了解詳細信息。
JavaScript 中的作用域
當您開始構建更複雜的應用程序時,您會開始看到很多關於 作用域 的討論 .變量的作用域定義了它在您的應用程序中的可用位置。
全局作用域(全局變量)
如果變量在全局 範圍,它在您的應用程序中的任何位置都可用。可以從任何函數或代碼塊調用它除非在所述函數或代碼塊的範圍內有同名變量可用 .
例如:
var myString = "hi!"; // Declaring a global variable function sayHi(){ console.log(myString); // Accessing the global variable myString from within a function } sayHi(); // Will output "hi!"
模塊範圍
如果你使用 JavaScript 模塊,模塊內的全局變量在它們之外是不可用的。
它們必須導出 從模塊中,然後導入 .然而,這最好留給關於模塊的文章!
功能範圍
函數 範圍意味著一個變量只在給定的函數中可用:
var myString = "goodbye!"; // Declaring a global variable function sayHi(){ var myString = "hi!";// Declaring a function scoped variable for use within this function. console.log(myString); // Accessing the function scope variable myString from within a function } sayHi(); // Will output "hi!"
塊範圍
塊 範圍是最本地的範圍。塊中聲明的變量({} 中包含的任何代碼 花括號)僅可用於同一組花括號內的代碼。
var myString = "goodbye!"; // Declaring a global variable if(true){ let myString = "hi!"; console.log(myString); // Will output "hi!" as it is accessing the myString variable in the current block scope } console.log(myString); // Will output "goodbye!" as it is outside of the above block, so it reads the global variable
用 var 聲明變量
使用 var 聲明變量 是老式的 JavaScript 方式。它看起來像這樣:
var myNumber = 3;
var 的範圍
使用 var 在函數之外會使其成為全局變量 .
如果在函數內部使用,該變量將在該函數中可用 - 函數作用域 .
var 的可重新聲明性/不變性
使用 var 聲明的變量 可以重新聲明和更新/更改,所以下面的代碼是可以使用的:
var myNumber = 3; myNumber = 4; var myNumber = 5;
使用 let 聲明變量
let myNumber = 3;
讓的範圍
讓 語句將為當前的塊範圍聲明一個變量 :
let 的可重聲明性/不變性
使用 let 聲明的變量 可以更新,但不能 重新聲明,這樣就OK了:
let myNumber = 3; myNumber = 4;
..但是,這不行:
let myNumber = 3; let myNumber = 4;
用 const 聲明變量
最後,常量 可用於聲明常量 :
const myNumber = 3;
const 的範圍
喜歡讓 , 常量 變量是塊範圍的 .
const 的可重聲明性/不變性
使用 const 聲明的變量 不能 被更新或 重新聲明。
在一行中聲明多個變量
您可以在一行中使用上述任何語句聲明多個變量:
var myNumber = 3, myString = "Hi!", myBool = false;