JS中用var宣告變數和不用var宣告變數的區別

2021-09-25 11:30:32 字數 954 閱讀 1867

閱前須知:作用域(分為全域性和區域性),函式會開闢自己的作用域(或"空間"或"過程級")

變數宣告

變數在指令碼中的第一次出現是在宣告中。變數在第一次用到時就設定於記憶體中,便於後來在指令碼中引用。使用變數之前先進行宣告。可以使用 var 關鍵字來進行變數宣告。

var count; // 單個宣告。

var count, amount, level; // 用單個 var 關鍵字宣告的多個宣告。

var count = 0, amount = 100; // 一條語句中的變數宣告和初始化。

如果在 var 語句中沒有初始化變數,變數自動取 jscript 值 undefined。儘管並不安全,但宣告語句中忽略 var 關鍵字是合法的 jscript 語法。這時,jscript 直譯器給予變數全域性範圍的可見度。當在過程級中宣告乙個變數時,它不能用於全域性範圍;這種情況下,變數宣告必須用 var 關鍵字。

1.在函式內部宣告變數

在函式內部用var宣告變數和不用的區別是很大的:用var宣告的是區域性變數,在函式外部訪問是訪問不到的;沒var宣告的變數是全部變數,在函式外部是可以訪問到的。

function test()

test();

console.log(a); // a is not defined

如果去掉var宣告變數a

function test()

test();

console.log(a); // bbb

2.在全域性作用域內宣告變數

在這裡用var宣告的變數我們之所以認為是全域性變數,是因為現在所在的作用域範圍是全域性,實際上它宣告的也是區域性變數,只是現在它的區域性變數全域性而已,所以就相當於起了全域性變數的作用。

全域性作用域中不用var宣告的也是全域性變數,那他們倆有啥區別呢?

比較var  a=1 和 b=2,前者是變數宣告,帶不可刪除屬性,因此無法被刪除;後者是全域性變數的乙個屬性,因此可以從全域性變數中刪除

JS中用var宣告變數和不用的區別

在js中宣告變數時用var和不用var有什麼區別,我查閱了很多的資料和書籍再加上我自己的理解來講述一下我自己的看法。在函式內部宣告變數 在函式內部如果用var宣告變數和不用時有很大差別,用var宣告的是區域性變數,在函式外部訪問這個變數是訪問不到的,沒var宣告的是全域性變數。在函式外部是可以訪問到...

JavaScript中用var宣告變數有什麼意義

var的本質 var a 3 宣告乙個變數a並給它賦值3 a 3 並沒有宣告乙個新的變數,只是往它的外層尋找變數名為a的變數,並給它賦值3。假設外層都沒有宣告a,那麼會找到window上的變數a 接下來我們看幾個例子 1.t2 中的str沒有用var宣告,找到了它的外層t1 中的str 執行結果 2...

函式中宣告變數不用Var的情況

我們都知道函式中宣告變數不用var時這個變數會成為全域性變數,但是並不是函式一開始執行就會把它變為全域性變數,必須執行到這條語句。看一段 function f f error a is not defined 只有函式內部執行到a 3時,a才會成為全域性變數並且等於3,因為這個函式不可能執行到這句語...