var
準備一範例
var ballName = "Baseball"; // code here can use ballName function myFunction() { // code here can also use ballName } var i = 5; for (var i = 0; i < 10; i++) { // some statements } // Here i is 10 // Block Scope { let x = 2; }
一、名詞解釋與特性
1、Global Scope
一 function 的外面則為 Global Scope。
當於 Global Scope 所宣告的變數,在 Function Scope 裡也可以存取得到的。
var ballName = "Baseball"; console.log(ballName); function myFunction() { console.log(ballName); } myFunction();
2、Function Scope
一 function 的裡面則為 Function Scope。
在 Function Scope 裡所宣告的變數,於 Global scope 不能使用。
function myFunction() { var ballName = "Baseball"; console.log(ballName); } myFunction(); // can't to accees function scope value //console.log(ballName);
3、Loop Scope
一個 for loop 的裡面則為 Loop Scope。
Loop Scope 的特性比較像 Global Scope。
var i = 5; for (var i = 0; i < 10; i++) { // some statements } // Here i is 10
因為數變 i 也算是 Global variable
for (var i = 0; i < 10; i++) { // some statements } // Here i is 10
4、Block Scope
一組 「{}」符號裡面則為 Block Scope。
在 ECMAScript 2015 以前(不包含 ECMAScript 2015),是沒有 Block Scope 這東西的。
二、Redeclaring Variables
在相同的 scope,var 所宣告的變數可以重新宣告。
var x = 1; var x = 100; console.log(x); // final x just equal to 100 function Foo() { var x = 5; var x = 500; console.log(x); // final x just equal to 500 } Foo();
但要注意的是,var 所宣告的變數,在 Block Scope 的是不分內外的。
var x = 1; var x = 100; console.log(x); { var x = 5; var x = 500; console.log(x); } console.log(x);