javaScript教程50: 變量查找規則與詞法作用域
阿新 • • 發佈:2018-05-18
全局 如果 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 如果只是訪問的話,找到全局都沒有就報錯 xxx is not defined
javaScript教程50: 變量查找規則與詞法作用域