2 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
f(): 是的提升了,所以console.log()執(zhí)行時(shí)f函數(shù)內(nèi)存在a,不會(huì)去外部作用域找,console.log()執(zhí)行時(shí),只是聲明了,沒有賦值,所以是undefined
f(4): 你的函數(shù)根本沒有定義形參,內(nèi)部也沒有使用arguments變量,所以傳什么都跟沒傳一樣,等同f()
arguments會(huì)接收到你傳進(jìn)來的所有參數(shù),不管你定義了沒有或者定義了多少。
function fun () {
console.log(arguments)
}
fun(1)//
fun(1,2,3,4,5)// 可以試試
函數(shù)形參可以當(dāng)做是隱形的變量聲明
function fun (a, b) {
console.log(a, b)
}
fun (1,2,3)
// 函數(shù)內(nèi)執(zhí)行時(shí)可以看做
{
let a = 1
let b = 2
// let c = 3 可是函數(shù)定義時(shí)并沒有提供c這個(gè)形式上的參數(shù),所以不會(huì)有這一步
console.log(a, b)
}

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
f();
var a=2;
function f() {
var a; // 變量提升
console.log(a);
var a=3;
}
f(4):
你的f()都沒有定義參數(shù),和f()是一樣的
添加回答
舉報(bào)