javascript知識點 作用域

2021-09-11 22:42:07 字數 1334 閱讀 3514

理解作用域,重要的是理解 js 解釋**的規範,js 在解釋**的時候會執行這2個步驟:

預解釋js 會對 var function 引數做乙個預解釋,儲存起來

逐行解釋

完成預解釋後,會逐行解釋**

例子1

console.

log(a)

var a =

1

執行上面的**,輸出的是:

undefined
跟著上面的步驟走就是:

1.預解釋:

會去尋找有 var 、function、引數,那麼上面的例子會找到 乙個var a將它存為undifined

2.逐行解釋:

console.log(a)就會輸出乙個undifined

例子 2

console.

log(a)

var a =1;

function

fn1();

fn1();

var a =3;

function

fn1(

)fn1()

console.

log(a)

執行上面的**,輸出的是:

undefined44

4

步驟分析

預解釋

var a  =  undefined ;

fn1 = function fn1();

var a = undefined;

fn1 = function fn1()

經過預解釋後a = undefined;fn1 = function fn1()

2. 逐行解釋

console.

log(a)

=>

//輸出a undefined

var a =1;

=>

// a 賦值為 1

function

fn1();

fn1();

// 呼叫 fn1 經預解釋 fn1 = function fn1()

//所以這裡賦值 a = 4; 輸出a 為 4

var a =3;

//又重新賦值 a = 3;

function

fn1(

)fn1()

console.

log(a)

//輸出 a 為 4

Javascript常見知識點

jquery d ocum ent rea dy 與win dow.onlo ad的區 別1.執行 時間wi ndow onl oad必 須等到頁 麵內包括 的所 有元素加 載完畢後 才能執行 document ready 是dom結構繪製完畢後就執行,不必等到載入完畢。2.編寫個數不同 windo...

javascript知識點彙總

function vartest console.log x 2 function lettest console.log x 1 var arr1 new array a b c 這是乙個預定義的陣列,在建立時初始化 var arr2 a b c 同樣是在建立時初始化,但是這種建立更為簡潔直觀 v...

JavaScript知識點之 delete操作符

delete操作符來刪除乙個隱式宣告的全域性變數,也就是沒有使用var定義的全域性變數.如果delete操作符刪除成功,則被delete的屬性已從所屬的物件上徹底消失,隨後,該物件的原型上可能存在的乙個同名屬性會被繼承.一些物件的屬性不能被delete.ecma 262 規範中把這些屬性標記為 do...