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);
原文:https://www.cnblogs.com/evilliu/p/10814226.html