一言難盡的js變數提公升

2022-05-06 03:42:10 字數 1347 閱讀 8665

在這個課題開始之前我們先做一些基礎知識的講解

1、在頂級的區域內宣告的變數為 window級別的變數。 也就是說var a=100 等價於 window.a=100;

2、區域性的重新宣告變數沒有意義。var a=100;var a;後面的將沒有意義。

3、在有引數函式的定義中 function abc(p1){} abc(1),在函式執行中,先構建,在執行,會有兩個步驟,所以說當函式執行之前構建過程中,將臨時生成** var p1=1;將來一切不賦值的宣告將變得沒有意義。

var p1;//沒有意義

var p1=2;//有意義。

全域性作用域和區域性作用域

全域性作用域:整個js執行環境

區域性作用域:通過建立乙個函式就開闢出了乙個區域性作用域

全域性變數和 區域性變數

全域性變數:在全域性作用域都可以訪問的變數

區域性變數:只能在當前區域性作用域訪問的

變數宣告提公升:

如果變數宣告在函式裡面,則將變數宣告提公升到函式的開頭

如果變數宣告是乙個全域性變數,則將變數宣告提公升到全域性作用域的開頭

變數執行(搜尋)機制:

首先看,有沒有區域性作用域

如果有,查詢是不是這個區域性作用域定義的變數

如果不是,尋找上一級作用域,直到找到全域性作用域

如果全域性作用域也找不到這個變數,這個變數就是未定義的 undefined

第一題:

var a=1;

function

test()

test();

根據變數宣告提公升和變數搜尋機制,函式test()應為

function

test()

第二題:

var b=2;

function

test2()

test2();

任何通過附加在window上的變數都相當於宣告乙個全域性變數,或者是給全域性變數賦值

第三題:

c=5; 

function

test3()

test3();

根據變數宣告提公升和變數搜尋機制:

c=5;//

宣告乙個全域性變數c

function

test3()

test3();

一言既出,駟馬難追

一言既出,駟馬難追 2012年01月12日 女兒電子琴十級考過之後,就經常向我提出要買架鋼琴,我想到她都是小學高年級的學生了,平時功課也很緊張,現在買鋼琴完全沒必要,何況電子琴和鋼琴差不多,只是力度有所不同,而且鋼琴 昂貴,所以一直都未答應。前段時間樓上不斷傳來鋼琴聲,又刺激了女兒的神經,於是又嚷著...

創業老闆不能犯的十種錯誤 面子問題「一言堂」

一 哥們式合夥,仇人式散夥在中國的股份制企業中最常見模式是 公司創辦之初,幾個朋友合夥以感情和義氣去處理相互關係,制度和股權或者沒有確定,或者有而模糊。企業做大後,制度變得重要,利益開始惹眼,於是 排座次 分金銀 論榮辱 企業不是劍拔弩張內耗不止,便是梁山英雄流雲四散。二 盲目崇拜社會關係 關係推動...