宣告會提升但賦值不會
test()
const test = function() {
console.log('test')
}
// Uncaught ReferenceError: Cannot access 'test' before initialization
在 function 裡的 a 提升
宣告變數會提升,賦值不會
var a = 'global'
function test() {
console.log(a)
var a = '10'
}
test()
// a is undelined
function 的優先度高於宣告變數
function test() {
console.log(a)
function a() {}
var a = 'local'
}
test() // f a() {}
同時宣告兩個一樣的 function,後者勝
var a = 'global'
function test() {
a()
function a() {
console.log(1)
}
function a() {
console.log(2)
}
var a = 'local'
}
test() // 2
hoisting 提升的順序
- function
- arguments (參數)
- var