---
# System prepended metadata

title: Hoisting 函式
tags: [JS, ' beginner']

---

---
tags: JS, beginner
---
# Hoisting 函式

...move the declaration of functions, variables or classes to **the top of their scope**, prior to execution of the code. -JS 裡 變數和函式皆會 Hoisting，
***
```htmlmixed=
// 函式 Hoisting
function hi(name) {
  console.log(`hi ${name}`);
}
hi('Tom'); // hi Tom

age(16); // 16 old
function age(years) {
  console.log(`${years} old`);
}

console.log(gender);
gender('male'); // gender is not a function
var gender = function (sex) {
  console.log(sex);
}
```
function 經 Hoisting, 執行方法 ( age(16) 或 hi('Tom') ) 寫在 function 的前後，都可以執行！
***

## 一旦 function 作為一變數值; 賦值給變數 (如 14 行)，在 13 行顯示 **gender is not a function**
### function 作為一變數值，需注意定義變數的位置 ((變數 Hoisting
將執行方法 gender('male') 稍作調整，便可以得到輸出 male
```htmlmixed=
var gender = function (sex) {
  console.log(sex);
}
console.log(gender); // f(sex)..印出函式內容
gender('male'); // male
```

***
[Hoisting](/npBWp0qbQJS4H3oOqBbVPg)
