做用域和做用域鏈

1.做用域的概念和特色
<script type="text/javascript"> //1.做用域:變量和函數的可訪問範圍,可見性; //建立變量或者函數同時就規定了它的做用域;js沒有塊級做用域; //外部做用域能夠不能夠訪問內部做用域,內部做用域能夠訪問外部做用域; //變量沒有在聲明或者沒有在函數內聲明的時候沒帶var就是全局做用域; //window對象的全部屬性擁有全局做用域;任何地方均可訪問; var a =10 ; function fn1(){ console.log(a); //10 (往上不往下找) } function fn2(){ var a =20; fn1(); } fn2(); </script>
2.變量做用域
<script type="text/javascript"> //變量提高 ,本做用域優先使用變量,若是沒有去它父級做用域直到全局做用域查找; //全局變量會佔用內存;變量覆蓋應當注意減小使用; var a = 'abcd' ; function fn(){ //第一個打印其實是 把a提高到函數第一行var a; a ='bcd'; console.log(a); //undefined var a = 'bcd'; console.log(a) //bcd } fn(); console.log(a); //不會干擾 依舊是全局abcd </script>
3.函數參數的(變量)的機制
<script type="text/javascript"> // function fn(a,b){ //第一行至關於var a,b console.log(a,b);// 1,2 } fn(1,2); console.log(a,b) //報錯a,b is not defined </script>
4.常見函數做用域狀況一
<script type="text/javascript"> //簡單的往外層找 var a = 1; function fn(){ var a = 6; function fn2(){ console.log(a); //6 } return fn2; } var test = fn(); test(); </script>
5.常見的函數做用域二
<script type="text/javascript"> //簡單的往外層找 var a = 1; function fn(){ var a = 6; function fn2(){ console.log(a); //20 } a = 20; //替代a = 6;了 return fn2; } var test = fn(); test(); </script>

做用域鏈:根據在內部函數能夠訪問外部函數變量的這種機制(我的理解)javascript

相關文章
相關標籤/搜索