一、變數提公升
在es6中提出了塊級作用域,用var宣告的變數,起作用域應為對整個塊都起作用,所以會跑偏;而且使用var宣告的變數會出現「變數提公升」現象。
那麼什麼是變數提公升呢?用以下**直觀感受一下:
其執行順序應為:
二、函式提公升
js中建立函式有兩種方式:函式宣告式和函式字面量式。只有函式宣告才存在函式提公升!如:
1
2
3
4
console.log(f1);
// function f1() {}
console.log(f2);
// undefined
function
f1() {}
var
f2 =
function
() {}
只所以會有以上的列印結果,是由於js中的函式提公升導致**實際上是按照以下來執行的:
1
2
3
function
f1() {}
// 函式提公升,整個**塊提公升到檔案的最開始
console.log(f1);
console.log(f2);
var
f2 =
function
() {}
例項:function text(n)
console.log(n)
}text(1)
執行順序應為:
var n
function n()
console.log(n);
n=2;
console.log(n)
深入理解JS中的函式宣告提公升和變數宣告提公升
簡介 本文先從函式的宣告方式說起,介紹不同函式的宣告方式在函式宣告提公升上的不同。然後根據具體的例子比較變數宣告提公升和函式宣告提公升的不同。第一部分 函式的宣告方式 函式宣告有三種方式 函式宣告,函式表示式 又稱函式字面量宣告 函式物件的宣告 使用率很低 方式一 函式宣告 function 函式名...
JS 變數提公升 函式名提公升 變數和函式結合的提公升
一 變數的提公升 1 使用var 關鍵字宣告的變數會提公升到 的頭部 變數提公升 例子 console.log num undefined var num 100 console.log num 100 var x console.log x undefined 2 不使用var關鍵字宣告的變數是全...
js箭頭函式深入理解
let f a let f a let f a return alet f a a f 2 2let f 如果沒括號,花括號內會被視作待執行語句let callback callback callback function ok,普通函式 callback callback syntaxerror ...