JS函式宣告提前 1

2021-08-18 17:23:07 字數 1031 閱讀 2100

var a =10;

function pay()

pay();//7

console.log(a);//7

/**函式宣告提前;執行js**前,解析器將當前作用域內宣告的所有變數和函

*數都會放到作用域的開始處

*1 function pay(){}會提前宣告;

*2 var a=10;

*3 pay(); 執行函式

*4 a-=3; a首先會在自己的函式作用域內尋找,沒有就在上一層去尋找,一直到找到,如果到

* 最底層也沒找到a的宣告和賦值,則報錯!此時a會找到上一層的 var a=10;全域性變數

* 所以a-=3計算時候改變了全域性變數的值;a-=3 此時var a =7;全域性變數

*5 函式體內 console.log(a) a=7;

*6 外層函式 console.log(a) a=7;

*/

var a = 10;

function test(a)

test(a);//7

console.log(a); //10

/**函式宣告提前;執行js**前,解析器將當前作用域內宣告的所有變數和函

*數都會放到作用域的開始處

*1 function test(a){}會提前宣告;

*2 var a=10;

*3 test(a); 執行函式 test(10);

*4 function test(a){} 此時實參將10賦值給函式體的形參a 就是 var a=10;

*5 a-=3 首先在自己函式域內尋找 發現var a=10; 則函式體內的區域性變數var a=10-3=7;

*6 函式體內 console.log(a) a=7;

*7 外層函式 console.log(a);首先在自己函式域內尋找 發現var a=10; 則全域性變數a=10

*/

js中函式宣告提前

js中普通的變數會宣告提前外,函式也會宣告提前,不同的是由於函式的宣告有兩種方法,宣告提前的方式也就有兩種方式 1 通過 var fn function 定義函式,只是將函式名提前了,函式體沒有提前,如果在函式體前使用fn 呼叫函式就會報錯 fn varfn function 結果 報錯!uncau...

JS宣告提前

js中的宣告提前,變數宣告提前,函式宣告提前,以及宣告提前的順序 console.log a a var a functiona console.log a a 6 a 四個輸出分別是什麼呢?我們來除錯一下,執行到 a 6時輸出如下 最後乙個a 報錯。接下來我們來分析一下原因 一 什麼是變數宣告提前...

js 變數 函式宣告提前問題

1 變數宣告提前 看 function 以上 報錯 referenceerror a is not defined,這很好理解 根本就沒宣告當然報錯啦,往下看 function 以上 對於直譯器來說是下面這樣的,所以沒有報錯,且輸出了undefined function 再來看一中情況 functi...