摘要:代碼的執行分為兩個步驟預解析提升代碼在預解析階段,會對以聲明的變量名,和開頭的語句塊,進行提升操作執行變量的提升提升之后的代碼模擬函數同名,如何提升預處理的時候,會將兩個函數全部提升,但是后面的函數會覆蓋掉前面函數預解析提升后的代碼變量和函
js代碼的執行分為兩個步驟
1.預解析
提升(hoisting) JavaScript代碼在預解析階段,會對以var聲明的變量名,和function開頭的語句塊,進行提升操作
2.執行
func(); function func(){ alert("Funciton has been called"); } //變量的提升 alert(a); var a = 1; //提升之后的代碼模擬 var a; alert(a); a = 1;
函數同名,如何提升
預處理的時候,會將兩個函數全部提升,但是后面的函數會覆蓋掉前面函數
func1(); //last function func1(){ console.log("This is first func1"); } func1(); //last function func1(){ console.log("This is last func1"); } //預解析提升后的代碼 function func1(){ console.log("This is first func1"); } function func1(){ console.log("This is last func1"); } func1(); //last func1(); //last
變量和函數同名
在提升的時候,如果有變量和函數同名,會忽略掉變量,只提升函數
alert(foo); //undefined 函數體 function foo(){} var foo = 2; alert(foo); //2 //預解析 提升后的代碼 function foo(){}; alert(foo); foo=2; alert(foo);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/52488.html
摘要:什么是函數作用域下的變量提升和函數提升函數作用域中也存在變量提升和函數提升,這個和全局作用域下的情況是一模一樣的,就是把作用域想成是全局的就可以了。 在js中有一部分比較難以理解,卻也是在筆試過程中很容易考的,那就是變量提升和函數提升的問題,這篇文章我會就變量提升和函數提升的問題拓展一下有關js函數的知識點,包括作用域的問題,后面還會有一些小練習來判斷自己是否真的搞懂了。 作用域 在j...
摘要:所謂變量提升,提升就是為了事先聲明變量。變量提升之后,但其賦值還是留在原本的位置等運行到了之后動態賦值,而函數提升之后直接相當于在代碼里抽空了。搞明白這個例子也就搞懂了作用域中變量和函數是怎么提升的。 問題 showImg(https://segmentfault.com/img/bVJ614?w=222&h=165); 在這個例子中它應該輸出什么?輸出的結果是6。 showImg(h...
摘要:變量的作用域無非就是兩種全局變量和局部變量。其中內部函數中可以訪問外部函數的變量,是因為內部函數的作用域鏈中包含了外部函數的作用域也可以理解為內部函數的作用范圍輻射到了外部函數的作用范圍另一方面,在函數外部自然無法讀取函數內的局部變量。 以前學習的時候,了解過變量提升和閉包,但是沒有深入了解,網上查了資料,這里記錄下,只供參考。部分內容引用: https://www.cnblogs.c...
摘要:但是碰到聲明提升,這種想法就會被打破。聲明一個函數進行相應的操作,會得到函數聲明提升的結果。由此可以發現變量和函數的聲明都會被提升在其他代碼的前面執行。一個普通塊內部的函數聲明通常會被提升到所在的作用域的頂部。的創建初始化和賦值均會被提升。 Javascript聲明提升 在分析聲明提升之前,我認為有必要知道的兩點: 一、引擎查詢變量的兩種方式 引擎查詢變量的方式可以分為LHS和RHS兩...
摘要:函數和變量相比,會被優先提升。這意味著函數會被提升到更靠前的位置。僅提升聲明,而不提升初始化。 JavaScript 函數高級——執行上下文與執行上下文棧(圖解+典型實例分析) 變量提升與函數提升 變量聲明提升 通過 var 定義(聲明)的變量,在定義語句之前就可以訪問到 值:undefined /* 面試題 : 輸出 undefined */ var a = 3 ...
閱讀 2022·2023-04-25 23:30
閱讀 1452·2021-11-24 10:18
閱讀 3070·2021-10-09 09:54
閱讀 2017·2021-10-08 10:05
閱讀 3431·2021-09-23 11:21
閱讀 3161·2019-08-30 15:52
閱讀 1560·2019-08-30 13:05
閱讀 1056·2019-08-30 13:02