變數宣告:通過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...