javascript 函式:中函式宣告與函式表示式的區別
阿新 • • 發佈:2021-10-17
// 這裡闡述的比較直接,是為了方便自己回顧複習的
參考:https://www.cnblogs.com/isaboy/p/javascript_function.html
函式表示式沒有函式宣告頭的提升
fn1() // fn1 function fn1() { console.log("fn1") } fn2() // 報錯 let fn2 = function(){ console.log("fn2") }
函式宣告頭提升後者會覆蓋前者
fn() // b2 function fn() { console.log("a1") } fn() // b2 function fn() { console.log("b2") } fn() // b2
相似題
function foo(){ function bar() { return 3; } return bar(); function bar() { return 8; } } alert(foo());
在使用 var 關鍵字時函式與變數同名之間的優先順序變數優先。如果使用的是 es6 宣告變數關鍵字 如果出現變數與函式同名會報錯
function foo() { function fn() { console.log("普通函式") } var fn = function(){ console.log("函式表示式") } return fn() } foo() // 輸出 "函式表示式"
函式宣告通過條件語句控制函式宣告的行為並未標準化,因此不同環境下可能會得到不同的結果
// 以下擷取:https://www.cnblogs.com/coco1s/p/3959927.html
// 千萬不要這樣做! // 不同瀏覽器會有不同返回結果, if (true) { function foo() { return 'first'; } } else { function foo() { return 'second'; } } foo(); // 記住,這種情況下要使用函式表示式: var foo; if (true) { foo = function() { return 'first'; }; } else { foo = function() { return 'second'; }; } foo();