2 0 作用域和預解析

2021-09-27 13:36:49 字數 2316 閱讀 7458

一、作用域份為全域性作用域和區域性作用域

作用域不僅有有變數作用域還有函式作用域

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並不會報錯,因為變數可以在大括號外面使用 除了函式中定義的變數 下面的這些也都可以輸出,並不會報...