線理清楚幾個概念:
函式的預編譯:
一、什麼是預編譯:
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...