變數的提公升:所有使用var宣告的變數都會提公升:提前到作用域一開始的位置被宣告,該賦值的位置再賦值
console.log(a);
var a =10;
**解析、以上**等同於一下**
var a ;
console.log(a);
a = 10 ;
//所以輸出 undefined, 表示a定義了,但是沒有賦值
例2:function fn ()
fn();
**解析
function fn ()
fn();
函式提公升 整個提公升
fn();
console.log(fn);
function fn ()
fn();
//**解析 等同於
function fn ()
fn(); //輸出 hello
console.log(fn); //輸出 f fn()
fn(); //輸出 hello
//例:
賦值式函式,只提公升變數,不提公升函式,因為函式沒有名字,無法提公升
fn()
console.log(fn);
var fn = function()
fn();
**解析
var fn;
fn(); //輸出 fn is not a function; 函式沒有提公升
console.log(fn); //輸出 undefined 定義變數了,但是還沒有賦值
fn = function()
fn(); // world
//例:
console.log(a);
var a = 10;
function a (){};
console.log(a);
//**解析 var宣告的變數提公升的更高,更高意味著有可能會覆蓋
var a;
function a (){};
console.log(a); //輸出 f a(){}
a = 10;
console.log(a); //輸出10
變數提公升和函式提公升
1.變數宣告提公升 通過var 定義 宣告 的變數,在定義語句之前就可以訪問到。值 undefined console.log a undefined var a 23 console.log a 23上面 等價於 var a 預編譯,將變數宣告提公升至當前作用域的頂端,初始值為undefined ...
變數提公升和函式提公升
首先js引擎在讀取js 時會進行兩個步驟,第乙個步驟是解釋,第二個步驟是執行。所謂解釋就是會先通篇掃瞄所有的js 然後把所有宣告提公升到頂端,第二步是執行,執行就是操作一類的。例子1 console.log a 輸出結果 undefined var a 10 script 以上 輸出 undefin...
變數提公升和函式提公升的意義
function test test 結果 成功function test test 結果 typeerror foo is not a function解析器在向執行環境中夾在資料時,對函式宣告和函式表示式並非一視同仁。解析器會率先讀取函式宣告,並使其在執行任何 之前可用 可以訪問 說白了就是,用...