1.變數提公升到當前作用域最頂端。2.僅宣告變數不賦值時,變數值初始化為undefined;因此在宣告語句前面可以列印變數的值為undefined。
3.當賦值給未宣告的變數, 則執行賦值後, 該變數會被隱式地建立為全域性變數(它將成為全域性物件的屬性)。
4.宣告多個變數,可以用英文逗號分隔,上述c由var關鍵字宣告,而變數d未宣告。
b=
6//變數未宣告,會造成全域性汙染
console.
log(a)
;//underfined
var a=10;
var b=
1,c=d=5;
console.
log(window.a)
;//10
1.let 宣告不會在全域性宣告時(在最頂部的範圍)建立window 物件的屬性。2.let 宣告的變數只在其宣告的塊或子塊中可用,這一點,與var相似。二者之間最主要的區別在於var宣告的變數的作用域是整個封閉函式。
console.
log(a)
;//10
console.
log(aa)
;//報錯
3.在同乙個函式或塊作用域中重複宣告同乙個變數會引起syntaxerror。
if
(true
)
4.在 switch 語句中只有乙個塊,你可能因此而遇到錯誤。
switch(1
)//解決方法--乙個巢狀在 case 子句中的塊會建立乙個新的塊作用域的詞法環境,就不會產生上訴重複宣告的錯誤。
switch(1
)case1:
}
5.暫存死區:…通過 let 宣告的變數直到它們的定義被執行時才初始化。在變數初始化前訪問該變數會導致 referenceerror。該變數處在乙個自塊頂部到初始化處理的「暫存死區」中。同樣的,typeof檢測也會報錯
function
do_something()
6.var 與 let合併的宣告方式會報syntaxerror錯誤, 因為var會將變數提公升至塊的頂部, 這會導致隱式地重複宣告變數.
//報錯
var bbb=10;
let bbb=
100;
//正確
var bbb=10;
常量命名可以大小寫,建議全部大寫
var b =5;
const
c= b;
b =50;
console.
log(c)
;//5
3.命名不會提公升,塊級範圍有效,且宣告的常量不作為全域性的屬性。
console.
log(c)
;//報錯
constc=
2;if(
true);
console.
log(c)
;//2
console.
log(window.c)
;//undefined
4.常量可以定義為物件和陣列
//屬性不會被保護
const
obj=
obj.name=
'超人強'
; console.
log(
obj);//
//陣列的方法依然可以使用,但不能賦值新的陣列
const
arr=
['1'
,'2'
,'3'];
arr.
push
("4");
arr.
splice(0
,1,'a');
console.
log(
arr)
;//["a", "2", "3", "4"]
arr=
[101
,102];
//報錯
js中變數宣告與變數提前
變數宣告 通過var表明變數的型別與名字,但並未賦值,如 var a 變數初始化 即為a賦值,如 a 1 使用變數步驟 a.宣告 b.賦值 3.呼叫 方式一 宣告和賦值不分離 var str 宣告和賦值不分離 console.log str 結果 宣告和賦值不分離 方式二 宣告和賦值分離 var s...
js變數宣告
var a 向系統要個空間 var 是個關鍵字,變數宣告只有var var a 10 這裡發生兩個過程,乙個是向系統要個空間,另乙個是把10放進房間。並且先發生第一步。var a 10 a 20 20的值把10的值覆蓋 var a,b,c,e 可以同時宣告多個變數,中間以,號 程式設計都是英文狀態 ...
js變數宣告方式
var 關鍵字 作用 宣告變數 student是變數名 自定義的,起名規範 運算符號 rhj 資料 資料代表頁面中所有的資訊 變數的作用 儲存資料 變數可以儲存js的任意資料型別 變數資料可以改變,名字不可變 乙個var宣告乙個變數,幾個var幾個變數 var student rhj 建立變數時,可...