JS作用域
-作用域指一個變數的作用范圍
全域作用域
-直接撰寫在script標簽中的JS代碼,都在全域作用域
-全域作用域在頁面打開時創建,在頁面關閉時銷毀
-在全域作用域中有一個全域物件window,它代表的時一個瀏覽器的視窗
,它由瀏覽器創建,我們可以直接使用
· 例:

輸出結果:

-在全域作用域中:
創建的變數都會作為window物件的屬性保存,
例:

輸出結果:

當輸出window物件中沒有的屬性時

創建的函式都會作為window物件的方法保存
例:

輸出結果:

var a=1與a=1;的宣告區別
變數宣告提前
-使用var關鍵字宣告的變數,會在所有的代碼執行之前被宣告
var a=1相當于在代碼最上方提前宣告a;也就是var a;后面再賦值
-但是如果宣告變數時不使用var關鍵字,則變數不會被宣告提前
function fun(){}與var fun2=function(){}的區別
函式宣告提前
-使用函式宣告形式創建的函式function 函式名(){}
它會在所有的代碼執行之前就被創建
-使用函式運算式創建的函式不會宣告提前,所以不能在宣告前呼叫
如果提前使用的話相當于undefined
全域作用域中的變數都是全域變數,
在頁面的任意部分都可以訪問的到
注意:
for,while,if等陳述句中宣告的變數都屬于全域變數
函式作用域
-呼叫函式時創建函式作用域,函式執行完畢以后,函式作用域銷毀
-每呼叫一次函式就會創建一個新的函式作用域,他們之間是互相獨立的
-在函式作用域中可以訪問到全域作用域的變數,
在全域作用域中,無法訪問到函式作用域的變數
例:

輸出結果:
![]()
-當在函式作用域操作一個變數時,它會先在自身作用域中尋找,如果有就直接使用
如果沒有則向上一級作用域中尋找
例:

輸出結果:

函式中的var a=1也會在本作用域中宣告提前
例:

輸出結果:

沒關鍵字var則不會宣告提前,會設定為全域變數
例:


輸出結果

定義形參就相當于在函式或者代碼塊中定義了該變數

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/93723.html
標籤:JavaScript
