jeck貓
2018-10-09 13:18:27
var a=1; function cc(){ a=2; return a; function a(){}這個地方是什么意思有什么意義 } cc(); console.log(a);為什么會輸出1
1 回答

MMTTMM
TA貢獻1869條經(jīng)驗 獲得超4個贊
這主要是基礎(chǔ)知識的應(yīng)用了。JavaScript對于作用域(Scope)和上下文(Context)的實現(xiàn)是這門語言的一個非常獨到的地方,函數(shù)可以接收不同的的上下文和作用域。
幾個知識點:
函數(shù)體內(nèi)部,局部變量的優(yōu)先級比同名的全局變量高。
函數(shù)中聲明的變量在整個函數(shù)中都有定義。
函數(shù)聲明提升,且函數(shù)聲明提升優(yōu)于變量聲明提升。
JavaScript 解釋器“前瞻性”查找所有變量定義,把它們“提升”到函數(shù)頂部。所以上面的代碼可等價于:
var a;
a = 1;
function cc(){
var a // 這個a是函數(shù)聲明的提升,優(yōu)先變量的。所以cc中的a變?yōu)榫植孔兞俊?/p>
a=2;
a = function (){} // 這個函數(shù)本來寫在retun 后面,但是聲明是有效的。
return a;
}
cc(); // 返回一個在cc中的空函數(shù)
console.log(a);// 等于當前作用域的a=1
添加回答
舉報
0/150
提交
取消