JavaScript理解筆記—變數提升 全域性作用域 名字空間
阿新 • • 發佈:2018-12-18
JavaScript會掃描整個函式體,把所有申明的變數提升到函式頂部。 注:var x=‘Tom’ 只提升宣告,不提升賦值。 例如:console.log(x);var x=‘Tom’; 執行不會報錯,輸出為:undefined 上述語句等效為:var x;console.log(x);x=‘Tom’; 所以在函式內定義變數時,要首先宣告所有變數。 在函式外定義的變數為全域性作用域,JavaScript預設有一個物件:window 全域性作用域的變數實際上是被繫結到window的一個屬性上。 例如:var course=‘99’; 直接訪問course和訪問window.course是一樣的。 全域性變數會繫結在window上,不同的JavaScript檔案若使用相同全域性變數或定義了相同名字的頂層函式,會造成命名衝突。 解決衝突方法:把所變數和函式全部繫結到一個全域性變數裡。 如:var MYAPP={}; //唯一全域性變數 MYAPP.name=‘Tom’; //其他變數 MYAPP.foo= function(){return ‘foo’ ;}; 塊級作用域 let(代替var宣告塊級作用域) 如: for(let i=0;i<10;i++){ i=100;} 則不能在for迴圈體之外使用變數i。 常量 const (塊級作用域)