js中變數宣告與變數提前

2021-09-01 08:34:23 字數 1636 閱讀 5004

變數宣告:通過var表明變數的型別與名字,但並未賦值,如 var a;

變數初始化:即為a賦值,如 a=1;

使用變數步驟:a.宣告–>b.賦值–>3.呼叫

// 方式一:宣告和賦值不分離

var str =

"宣告和賦值不分離"

; console.

log(str)

;//結果:宣告和賦值不分離

// 方式二:宣告和賦值分離

var str2;

str2 =

"宣告和賦值分離"

; console.

log(str2)

;//結果:宣告和賦值分離

注意:在同一作用域中,變數的名字只能使用一次(不能重複宣告同乙個變數),但可以為同乙個變數賦值,後面賦的值會覆蓋前面的,如;

//變數宣告並初始化

var num =1;

console.

log(num)

;//結果:1

// 同一變數重新賦值,後面的值會覆蓋前面的

num =3;

console.

log(num)

;//結果:3

變數宣告提前,僅僅是將宣告提前了,但未賦值,舉個例子:

console.

log(a)

;var a=

1;

輸出的結果是undefined,原因是變數宣告提前,可以將**理解為:

var a;

//只宣告了變數未賦值

console.

log(a)

;//結果為undefined;a=1

;

再來看個例子

var a=1;

console.

log(a)

;//結果為1

functionb(

)b()

;

為什麼第二個a的結果是undefined?原因也是變數宣告提前,**相當於:

var a=1;

console.

log(a)

;//結果為1

functionb(

)b()

;

var a=1;

functionb(

)b()

;console.

log(a)

;//結果為10;

///var a=1;

functionb(

)}b(

);console.

log(a)

;//結果為1

第乙個**結果為10很好理解,但第二個為什麼是1呢?因為裡面寫了個function a函式宣告會提前,相當於在區域性又宣告了乙個a就影響不到全域性的a;看**:

var a=1;

functionb(

);a=10;

return;}

b();

console.

log(a)

;

函式外面的a訪問不到在函式中宣告的變數,這就是閉包;

js中變數的提前宣告?????

變數的宣告提前 使用var關鍵字宣告,會在所有的 執行前被宣告 但不會賦值 但是如果宣告變數不是用var 變數不會提前宣告 var a a 2 console.log a b var b,c,d fun 總結 使用函式宣告提前建立 function 函式名 會在所有 執行前就會被建立 functio...

變數宣告提前與函式宣告提前

變數的宣告提前 在全域性作用域中,使用var關鍵字宣告的變數會在所有的 執行之前被宣告,但是不會賦值。所以我們可以在變數宣告前使用變數。但是不使用var關鍵字宣告的變數不會被宣告提前。在函式作用域中,也具有該特性,使用var關鍵字宣告的變數會在函式所有的 執行前被宣告,如果沒有使用var關鍵字宣告變...

變數宣告提前 總結 js

js在執行時,js變數宣告語句無論出現在何處,都會先於其他 首先被執行。使用var的宣告的變數會提前。先舉個例子看看 console.log a function a var a 3 var b function console.log a 3function a b console.log a 4...