作用域解析及作用域鏈

預解析遇到重名,只留一個。如果與函數重名,就只留下函數。

 console.log(a);// function a(){console.log(4)}
    var a = 1;
    console.log(a); // 1
    function a(){
        console.log(2);
    }
    console.log(a);// 1
    var a = 3;
    console.log(a); //3
    function a() {
        console.log(4);
    }
    console.log(a());//報錯

自上而下,由內而外

 <script type="text/javascript">
      alert(a);//報錯
  </script>
   <script type="text/javascript">
      var a = 1;
  </script>
--------------------------------------------------
 <script type="text/javascript">
      var a = 1; 
  </script>
   <script type="text/javascript">
     alert(a);//1
  </script>
var a = 1;
function test() {
    alert(a);
    var a = 2;
}
alert(a);//1
test();// undefined
var a = 1;
function test() {
    alert(a);
    a = 2;
}
test();// 1
alert(a);// 2
var a = 1;
function test() {
    alert(a);
    a = 2;
}
alert(a);// 1
test();// 1
var a = 1;
function test(a) {
    alert(a);
    a = 2;
}
test();// undefined
alert(a);// 1
發佈了44 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章