Javascript 聲明提前

函數(shù)定義語句中函數(shù)被顯式地"提前"到了腳本或函數(shù)地頂部鳞陨。因此它們在整個腳本和函數(shù)內部都是可見的。使用var地話只有變量聲明提前了--變量初始化代碼仍然在原來地位置瞻惋。

函數(shù)定義被提前

在腳本里和函數(shù)內部無論在哪個地方定義了函數(shù)厦滤,其他地方都能夠訪問。當然歼狼,可以舉個例子說明掏导。我們定義一個長函數(shù):

> result = function() {
...     var b = a;
...     b();
...     function a() {
.....         console.log("I am a!!");
.....     }
... }
[Function]
> result()
I am a!!

例子說明了這句話:

函數(shù)定義語句中函數(shù)被顯式地"提前"到了腳本或函數(shù)地頂部。因此它們在整個腳本和函數(shù)內部都是可見的羽峰。

上面例子中函數(shù)a在變量b后面被定義趟咆。但是我們函數(shù)體內第一句話就已經(jīng)吧函數(shù)a賦值給b;并在第2句話調用函數(shù)b添瓷。如果函數(shù)的定義沒有被提前的話這樣來說應該會報錯才對。事實上并沒有報錯值纱。證明了函數(shù)定義會被提前到函數(shù)的頂部鳞贷。腳本級別的函數(shù)也是如此。這里不冗余了虐唠。

變量聲明被提前

這里變量聲明被提前相對于函數(shù)定義被提前又稍微復雜一點搀愧。因為變量的規(guī)則是 使用var地話只有變量聲明提前了--變量初始化代碼仍然在原來地位置。疆偿。這個其實也很好證明咱筛。我們在node里面定義一個函數(shù)。

> var variable = "Hello World";
undefined
> function testVariable() {
...     console.log(variable);
...     var variable;
...     console.log(variable);
...     variable = "Happy Coding";
...     console.log(variable);
... }
undefined

然后調用這個函數(shù):

> testVariable()
undefined
undefined
Happy Coding

得到了很夢幻的結果杆故。容小弟來解釋一下迅箩。

  1. 我們在函數(shù)外面聲明了變量variable,由于函數(shù)內部也通過var聲明了同名變量处铛。所以外部的全局變量被局部變量覆蓋掉了饲趋。之所以這里是undefined是由于var聲明被提前了。
  2. 這里variable也是undefined是由于罢缸,我們在1處已經(jīng)聲明了變量篙贸。兩者直接并沒有任何的副作用語句,所以它現(xiàn)在的值依然是undefined枫疆。
  3. 由于打印之前對變量進行賦值操作爵川。所以現(xiàn)在變量的值是Happy Coding

這個例子很好證明了:

使用var的話只有變量聲明提前了--變量初始化代碼仍然在原來的位置息楔。

Happy Coding _

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末寝贡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子值依,更是在濱河造成了極大的恐慌圃泡,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愿险,死亡現(xiàn)場離奇詭異颇蜡,居然都是意外死亡,警方通過查閱死者的電腦和手機辆亏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門风秤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人扮叨,你說我怎么就攤上這事缤弦。” “怎么了彻磁?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵碍沐,是天一觀的道長狸捅。 經(jīng)常有香客問我,道長累提,這世上最難降的妖魔是什么尘喝? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮刻恭,結果婚禮上瞧省,老公的妹妹穿的比我還像新娘扯夭。我一直安慰自己鳍贾,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布交洗。 她就那樣靜靜地躺著骑科,像睡著了一般。 火紅的嫁衣襯著肌膚如雪构拳。 梳的紋絲不亂的頭發(fā)上咆爽,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音置森,去河邊找鬼斗埂。 笑死,一個胖子當著我的面吹牛凫海,可吹牛的內容都是我干的呛凶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼行贪,長吁一口氣:“原來是場噩夢啊……” “哼漾稀!你這毒婦竟也來了?” 一聲冷哼從身側響起建瘫,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤崭捍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后啰脚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體殷蛇,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年橄浓,在試婚紗的時候發(fā)現(xiàn)自己被綠了粒梦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡贮配,死狀恐怖谍倦,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情泪勒,我是刑警寧澤昼蛀,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布宴猾,位于F島的核電站,受9級特大地震影響叼旋,放射性物質發(fā)生泄漏仇哆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一夫植、第九天 我趴在偏房一處隱蔽的房頂上張望钩述。 院中可真熱鬧,春花似錦秩伞、人聲如沸涛酗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽由捎。三九已至,卻和暖如春饿凛,著一層夾襖步出監(jiān)牢的瞬間狞玛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工涧窒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留心肪,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓纠吴,卻偏偏與公主長得像硬鞍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子呜象,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容