摘要:而在語句之前,局部變量確實是。順便有個網(wǎng)站能在線執(zhí)行,。不過一直沒發(fā)現(xiàn)有好的的解釋器和調(diào)試器,在瀏覽器里弄略蛋疼。
這個還是自己記一下,在以下這篇文章中也有很好的講解
http://www.kenneth-truyers.net/2013/04/20/javascript-hoisting-explained/
Javascript中沒有block scope,只有函數(shù)和全局兩個范圍。
在函數(shù)中部聲明的變量會被隱式的提升(hoist)到函數(shù)頭部,比如以下代碼
function test() { alert(a); // undefined, 注意不是ReferenceError while (true) { var a = 5; break; } alert(a); // 5 } test();
這里能兩個都能alert出來沒有錯誤是因為,這段代碼等同于如下代碼
function test() { var a; // 把函數(shù)中所有局部變量的聲明都提升到頭部 alert(a); while (true) { a = 5; break; } alert(a); } test();
這里就要非常小心這種被隱式提升的局部變量和全局變量的一些沖突了,比如下面這段代碼
var bird = "sparrow"; function test() { if (typeof bird === "undefined") { var bird = "pigeon"; } alert(bird); // pigeon } test();
很奇怪吧為什么alert出來是pigeon而不是sparrow, 因為局部變量bird把全局變量遮蓋了。而在if語句之前,局部變量bird確實是undefined。
不得不說這很tricky。
順便有個網(wǎng)站能在線執(zhí)行js,http://jsfiddle.net。
不過一直沒發(fā)現(xiàn)有好的js的解釋器和調(diào)試器,在瀏覽器里弄略蛋疼。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/87625.html
摘要:中函數(shù)是一等公民,所有的函數(shù)實際上是一個對象,與其他引用類型一樣擁有著屬性和方法,也可以被外界或者自身調(diào)用,也可以像傳遞參數(shù)一樣將函數(shù)傳遞給另一個函數(shù)。中函數(shù)沒有重載的概念,當定義兩個同名函數(shù)的時候,前一個函數(shù)會被覆蓋掉,舉個栗子。 JavaScript中函數(shù)是一等公民,所有的函數(shù)實際上是一個Function對象,與其他引用類型一樣擁有著屬性和方法,也可以被外界或者自身調(diào)用,也可以像傳...
摘要:輸出的結(jié)果為輸出的結(jié)果為提升后輸出的結(jié)果為重新定義了變量輸出的結(jié)果為如果定義了相同的函數(shù)變量聲明,后定義的聲明會覆蓋掉先前的聲明,看如下代碼輸出練習的值是多少的值是多少第二題的解析請看這里參考資料文章文章中文版鏈接文章推薦文章變量提升 JavaScript 變量聲明提升 原文鏈接 一個小例子 先來看個例子: console.log(a); // undefined var a =...
摘要:變量作用域一個變量的作用域表示這個變量存在的上下文。在這種情況下,僅僅函數(shù)聲明的函數(shù)體被提升到頂部。雖然我們無需用來修飾形式參數(shù),但是形式參數(shù)的確也是變量,并且被自動提升到次高的優(yōu)先級函數(shù)聲明。 關(guān)于作用域,變量提升,函數(shù)提升的個人理解 參考: 阮一峰的JavaScript參考教程2.7函數(shù)部分 思否上一篇關(guān)于作用域,提升的博客 一篇關(guān)于作用域和提升的個人博客 MockingBird...
摘要:函數(shù)提升在里有兩種方式創(chuàng)建函數(shù),通過函數(shù)聲明和函數(shù)表達式。函數(shù)聲明用指定的參數(shù)來定義函數(shù)。提示不要在中進行函數(shù)聲明。問題輸出兩個都是用函數(shù)聲明的函數(shù),將被提升到的局部作用域頂端。函數(shù)本身將作為函數(shù)聲明在全局范圍內(nèi)提升。 作者關(guān)于提升的話題,總共有兩篇。(后來又有一個討論篇),再次搬過來。水平有限,如果翻譯的不準確請包涵,并去看原文。下面開始: 這是我之前的關(guān)于提升的文章,標題為《用le...
摘要:函數(shù)和變量聲明總是用這樣的方式被提升,變量的賦值將在代碼中的任何位置出現(xiàn)。然而,這里輸出的是就是這個原因我認為變量聲明沒有提升。變量聲明在函數(shù)聲明之后或者下面被提升。這是個關(guān)于變量提升的簡單又又明確例子這被理解為現(xiàn)在明白了。 2017年的事情還是2017年完成吧。話不多說,現(xiàn)在開始: 之前翻譯過兩篇發(fā)表在Medium上的兩篇文章,關(guān)于變量和函數(shù)提升的問題。后來發(fā)現(xiàn),一個讀者(Gavin...
閱讀 2066·2021-09-22 15:54
閱讀 1830·2021-09-04 16:40
閱讀 855·2019-08-30 15:56
閱讀 2623·2019-08-30 15:44
閱讀 2150·2019-08-30 13:52
閱讀 1120·2019-08-29 16:35
閱讀 3340·2019-08-29 16:31
閱讀 2562·2019-08-29 13:48