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