JavaScript函式簡單理解(2) 預編譯

2021-08-28 04:25:02 字數 1276 閱讀 1307

線理清楚幾個概念:  

函式的預編譯:

一、什麼是預編譯:

1、函式宣告的整體提公升(永遠會提公升在邏輯的最前邊)

2、變數宣告的提公升(只是提公升了變數定義的語句,賦值語句是沒有提公升的)

二、全域性變數和區域性變數:

1、imply global(隱式全域性變數):及時乙個沒有經過宣告就被賦值的變數,可以在全域性(window)的任何地方進行呼叫。

全域性物件(window):為乙個

2、全域性上的變數,計是宣告了也屬於window所有,全部是window的屬性,window就是全域性的域。

預編譯:預編譯發生在函式執行的前一刻/

預編譯的過程:

1、建立ao(activity object)執行期上下文(也就是作用域)

2、找形參和形參值統一

3、將實參值和形參值統一

4、在函式體裡面找函式宣告,將值賦予函式

全域性也會進行預編譯,與函式類似,全域性會建立乙個go(global object)//也是屬於window的乙個屬性

區域性變數呼叫未定義的元素的時候會像上一級尋找,即,ao裡邊沒有定義但卻要引用是會在go裡邊進行查詢

作用域:

1、a的定義----->會產生乙個[scope]   裡邊會存著這個a的go

2、這個a在執行的時候會產生乙個a的ao,並且把它放在作用域的頂端(類似於堆疊,將之前的go給擠到下邊去)

3、現在a裡邊訪問的變數時,就是訪問a的[scope],自頂向下查詢。

4、如果a裡邊有新的定義,那麼這個新的定義裡面會自動在它的父級基礎之上繼續生成。

f1();

console.log(c);

console.log(b);

console.log(a);

function f1()

//ao產生:----> ao---->f1 a

//進行賦值----> f1=function(){}; a=10;

//按順序執行,並且呼叫函式

f1();

var f1 =function() ;

執行結果:

最後一行報錯了,因為在定義時只有變數a的前邊有var ,b、c前邊沒有var,也就是說b、c其實就是隱式的全域性變數,它的作用範圍是全域性的,而a前邊有var,所以是區域性的變數,在呼叫f1()函式時,預設的ao裡邊是沒有a這個變數的,所以會報錯。

Spring Cloud Eureka簡單理解

eureka服務治理基礎架構包括三個核心要素。1 服務註冊中心 eureka分為客戶端和服務端,eureka服務端提供服務註冊與發現的功能。2 服務提供者 提供服務的應用,spring boot應用或者遵循eureka通訊機制的應用。將應用自己註冊到eureka註冊中心,以供其它應用的發現。3 服務...

《精通javascript》幾個簡單的函式 二

隱藏元素 param elem function hide elem elem.style.display none 顯示元素 param elem function show elem 設定透明度 param elem param level 0 100 function setopacity e...

《精通javascript》幾個簡單的函式 二

隱藏元素 param elem function hide elem elem.style.display none 顯示元素 param elem function show elem 設定透明度 param elem param level 0 100 function setopacity e...