1. 程式人生 > >javaScript教程50: 變量查找規則與詞法作用域

javaScript教程50: 變量查找規則與詞法作用域

全局 如果 code 變量賦值 style 調用函數 幫我 bsp define

作用域:

1 在es5.0中只有函數可以構成一個作用域 2 全局作用域: 整個js代碼執行的環境 3 局部作用域: 函數可以構成一個局部作用域 4 全局變量: 在全局作用域中申明的變量 5 局部變量: 在函數構成的局部作用域中申明的變量

var a = 1;
  function fn(){
   var a = 2;
    function fnA(){
     a = 3;
     console.log(a);  //3
    }
   fnA();
   console.log(a); // 3
  }
    fn();
  console.log(a);// 1

詞法作用域(靜態作用域):

  1. 外部作用域不能訪問內容作用域的變量
  2. 查找變量時,順著作用域鏈查找
  3. 在代碼執行之前,先執行預解析規則
  4. 如果要調用函數,函數內部也要先進行預解析
  5. 如果要給變量賦值之前,一定要先找到變量

變量的查找規則

1 先在自己的作用域裏面找,如果沒有就順著作用域鏈往上找,找到則返回,找不到則一直找到全局為止 2 如果要直接賦值的話,找到全局也沒有,那麽瀏覽器會幫我們自動創建一個出來 3 如果只是訪問的話,找到全局都沒有就報錯 xxx is not defined

javaScript教程50: 變量查找規則與詞法作用域