求解 js函式在預編譯期間的謎

2022-05-03 09:15:09 字數 706 閱讀 2835

先看這麼一句話:

「在js預編譯期,僅僅是對函式的名稱、函式內部的各種識別符號進行檢索,並建立索引」

根據上述,我們看看示例:

示例1:

function test6_2()   預編譯時,被函式a替換,疑問:在函式a後面繼續宣告有a變數,不過這個變數似乎優先順序不夠?

alert(a); 

var a = "abc";

function a()

var a = 1.11111;

alert(a); // 1.11111

示例3:

function test6_4()   預編譯時,被函式f替換,疑問:在函式f後面繼續宣告有識別符號f,不過這個變數似乎優先順序不夠?

alert(f);

function f()

var f = function() ;

示例4:

function test6() ;

f();          //3

function f() ;

f();                   //6

備註:繼續學習,後期來解答這個疑問!

JS預編譯 函式預編譯和全域性預編譯

預編譯發生在函式執行前一步 建立ao物件 執行期上下文 找形參和變數宣告,將變數和形參名作為ao 屬性名,值為undefined 將實參值和形參統一 在函式體裡面找函式宣告,值賦予函式體 結果 預編譯過程 函式馬上要執行,但是還沒執行 首先建立ao物件,也就是函式它產生的儲存空間庫 ao,b und...

JS 函式預編譯

1 語法分析 2 預編譯 3 解釋執行 預編譯四部曲 1.函式在執行的瞬間,生成乙個執行期上下文 active object 簡稱ao 2.分析引數 2.1 函式接收形式引數,新增到ao的屬性,並且這個時候值為undefine,例如ao.age undefined 2.2 接收實參,新增到ao的屬性...

js的預編譯

預編譯發生在函式執行前一刻 預編譯執行的步驟 1建立執行期上下文,activation object 即ao 2找形參和變數宣告,將形參和變數宣告做為ao的屬性名,尚未賦值,值為 undefined 3將形參和實參相統一,即把實參的值傳到形參裡面去 4在函式體裡面找函式宣告,賦值函式體 functi...