一、作用域份為全域性作用域和區域性作用域
作用域不僅有有變數作用域還有函式作用域
var a =
10// a是全域性作用域 在**都能訪問和修改
function fn()
console.
log(b)
//這裡b是不存在的 會報
function fn()
say(
)//可以呼叫}fn
()console.
log(a)
//報錯
say(
)//報錯
//預解析
//預解析 熱身運動
console.
log(b)
//undefined
var b =
10 console.
log(c)
//報錯
c =10
// js執行時 步驟
// 1、預解析
// 找東西 (var 函式 引數) 步驟:
// 1.var :找到var 給var 的變數賦乙個undefined 提到最前面
// 2.函式: 找到函式整體提到最前面
// 3.引數:同var
//例如:
// console.log(b) //undefined
// var b = 10
// 找東西
var a = undefined;
console.
log(a)
//所以 是undefined
var a =
10
// 小案例:
var a =10;
function fn()
fn()console.
log(a)
//10
//首先預解析
// 找var提到最前面
// var a = undefined
// 函式是乙個作用域也要提到前面 進行預解析
// 函式中的預解析
// function fn()
//賦值 a = 10
// fn()
// console.log(a) //10
完事 逐行解讀
思考:
// 小案例:
var a =10;
function fn()
fn()console.
log(a)
//5
引數同var
//預解析
var a = undefined;
function fn
(a) a =
10//全域性變數賦值fn(
)//注意這裡是沒有實參的
console.
log(a)
//10
有實參
//有實參
var a =10;
function fn
(a)fn
(a)//有實參
console.
log(a)
//10
// 預解析
var a = undefined
function fn
(a) a =
10//這裡是全域性變數
fn(a)
console.
log(a)
//10
// 預解析如果同名
// 函式 > 引數和var
function fn
(a)
console.
log(a)
//是個函式 function a() {}
var a =
5; 他也幹不過 變成了a =
5 function a()
//函式大於引數和var 直接覆蓋
console.
log(a)
//5}fn(
1)
解決為什麼函式表示式只能在定義後面呼叫
fn()
//報錯
var fn =
function()
//因為他提上去 var fn =undefinedfn(
)//正常執行
作用域 預解析
作用域概念預解析規則 作用域 在一定的空間 範圍 區域對內容進行讀寫!瀏覽器 js解析器 1 會去找 var function引數等,a 未定義 所有變數,在正式執行之前 都提前賦了乙個值 未定義 fn1 function fn1 所有的函式,在正式執行 之前,都是整個函式塊 這種叫做js 預解析 ...
js的預解析和作用域
預解析指的就是,在js檔案或者script裡面的 在正式開始執行之前,進行的一些解析工作。這個工作很簡單,就是在全域性中尋找var關鍵字宣告的變數和通過function關鍵字宣告的函式。1.尋找 var function 引數 等關鍵字,根據var a提前設定為 a 未定義 undefined 所有...
JS中的作用域 作用域鏈和預解析
全部變數 js中除了在函式中定義的變數,都是全域性變數 全域性變數的使用範圍是作用域 作用域 就是變數的使用範圍 js中沒有塊級作用域即一對括號中定義的變數,這個變數可以在大括號外面使用 例如結果是 10並不會報錯,因為變數可以在大括號外面使用 除了函式中定義的變數 下面的這些也都可以輸出,並不會報...