js函數作用域
阿新 • • 發佈:2019-05-05
src 一個 div 提升 alt mage fin 依然 ole
1 //變量提前 並不是賦值提前,變量a提前此時a的值為undefined,而同名的函數提前,將會覆蓋變量a,使a的值為函數。 2 var a; 3 a=()=>{ 4 console.log(11) 5 }; 6 console.log(a);
1 // 改變變量a的聲明位置,結果依然一樣。究其原因:變量提升,並不包含變量復制的提升。 2 a=()=>{}; 3 var a; 4 console.log(a);//a的值依然是函數。
也可以這麽認為在聲明變量和顯示聲明函數的時候,函數的值會覆蓋變量。
對於變量覆蓋:只是針對重新聲明變量。
- 同一個作用域中,會進行值得覆蓋,函數覆蓋變量;變量覆蓋變量;函數覆蓋函數。
- 不同作用域,不會出現覆蓋情況。
1 var k; 2 var k=2; 3 console.log(k); 4 m=()=>{console.log(131231)}; 5 var m; 6 console.log(m); 7 n=()=>{console.log(1)}; 8 n=()=>{console.log(2)}; 9 console.log(n);
1 //如果進行覆蓋,不可以重新聲明變量,直接調用改變。 2 var cl1=22; 3 dd1=()=>{ 4 cl1=33; 5 }; 6 dd1(); 7 console.log(cl1);
js函數作用域