1. 程式人生 > >js函數作用域

js函數作用域

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函數作用域