window全域物件
全域作用域:
直接撰寫在script標簽中的js代碼,都在全域作用域
全域作用域中的變數都是全域變數,在頁面的任意的部分都可以訪問的到
在頁面開啟時創建全域作用域,在頁面關閉時全域作用域銷毀
window物件的簡介:
window是全域作用域中的一個物件,他代表的是一個瀏覽器的視窗,他由瀏覽器創建,我們可以直接使用,
在全域作用域中,我們創建的變數都會作為window物件的屬性保存

所以我們可以這樣來呼叫全域作用域中的變數
同時,全域作用域中創建的函式都會作為window的方法來保存

全域作用域中的物件也可以作為window的屬性

變數的宣告提前
變數的宣告會提前,什么意思呢?
就是說,當我們用var宣告一個變數,那么無論你這個宣告在js代碼里面的哪里寫著他都會在函式中所有代碼執行之前被宣告,
比如:

這里,雖然a的宣告寫在了呼叫a的前面,但是沒有報錯,只是回傳了一個undefined,下面的b后面沒寫var但是報錯了,
原因:
變數的var宣告無論寫在js的哪里都會在所有代碼的執行之前進行宣告,但是只是宣告,不會在前面賦值
在js里面我們宣告變數的時候其實可以不使用var關鍵字,比如這樣a=123這樣就等于,window.a=123,但是,如果我們宣告變數不使用var關鍵字的話,那么他就不會在所有代碼的執行之前進行宣告
函式的宣告提前
函式有兩種定義方式,如下:

可以看到,第一種定義函式的方法在定義之前我們就可以呼叫,但是第二種定義方法在定義之前呼叫的話會報錯
第一種定義函式方法:
function hanshu1(){}會在函式中所有代碼執行前進行定義,即宣告提前
第二種定義函式方法:
var hanshu2=function(){};不會宣告提前
前面兩個加函式中的意思是如果是在函式中這樣定義,那么在函式外面還是無法呼叫定義的函式或變數,js中可以進行函式的嵌套宣告
函式定義域
呼叫函式時創建函式作用域,函式執行完畢以后函式作用域銷毀,
每呼叫一次函式就會創建一個新的函式作用域,他們之間互相獨立
當在函式作用域操作一個變數時,它會先在自身作用域中尋找,如果找不到會回傳上一級尋找直到找到全域變數
注意:
上一級的變數不一定是全域變數,因為js中的函式可以嵌套
比如:

注意這里:
黑線圈起來的部分,因為定義的han()函式也是在hanshu()里面定義的,所以也是一個局內函式,不能在hanshu()外邊直接呼叫,但是可以在han()函式外hanshu()函式中呼叫,然后再在hanshu()函式外呼叫hanshu()函式就能呼叫han()函式了
如果在函式作用域中要訪問跟函式作用域變數同名的全域作用域變數,那么我們可以把這個變數當做window物件的屬性來進行呼叫,即window.變數名
在函陣列作用域中也有宣告提前的特性,如下:

函式里面在呼叫c后面定義c前面沒有定義,然后不會用他外邊的c
注意:
在任何都沒有定義的變數,在函式中直接的使用并且這個函式被呼叫的話,那么他其中未定義的使用的變數會變成全域變數

還有這么一個東西

定義函式里面寫形參就等于這些形參在函式里面定義了
如下

就這樣
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/208223.html
標籤:其他
上一篇:JavaScript基礎知識學習總結篇(每個知識點都附帶上機的例子,而不是純理論) 上,當前字數統計:12435
下一篇:Style(2):命名空間
