變量的做用域問題

變量的做用域:面試

變量的做用域是變量的生命期和做用範圍,它取決於變量的聲明位置。根據做用域的不一樣能夠將變量劃分爲局部變量和
全局變量;局部變量在過程的內部聲明而具備局部做用域,過程外部任何命令都不能訪問,每次執行過程建立的變量均隨此
過程的結束而銷燬;全局變量在過程的外部聲明而具備全局做用域其值能被ASP頁面上的任何腳本命令訪問和修改,全局變
量隨腳本運行的結束而消亡。函數

JS中沒有塊級做用域,{}就是一個塊,可是JS沒有這樣的塊級做用域,由於在if或是while或是for等等{}設置的變量是能夠被外部或是全局使用域訪問的。spa

JS中只有兩個做用域,一個是局部做用域(函數的內部),一個是全局做用(兩個script之間)blog

函數內是能夠訪問全局做用域的成員。ip

全局做用域是沒法訪問函數內部的變量的。作用域

 

 

例:
<script>
function f1(){ // b c 沒有var聲明,是屬於全局變量
var a = b = c = 9;
console.log(a);
console.log(b);
console.log(c);

f1();
console.log(c);
console.log(b);
console.log(a); // 當前做用域內沒有變量a所以報錯了

</script>

 

在控制檯輸出結果以下:io

 

函數的預解析:console

  就是JS是執行代碼以前,會將全部的代碼先提早掃描一遍,將變量的聲明和函數的聲明會提到,當到做用域(全局或局部)的最前面。function

 在作面試題的,必定要註冊JS的預解析機制。變量

相關文章
相關標籤/搜索