变量的赋值情况解惑

第一:如下,按我的理解是函数里面的b引用了外面定义的全局变量b并重新赋值,所以b=2可以理解,而在函数里面重新定义了变量a生成新的作用域,我不理解a的值为undefined的具体思路是怎么来的???

var a, b = 0, 
fn = function(){var a = b = 2;

};

fn();console.log(a, b);//(undefined,2)

第二:如下,在函数里面,不是应该先提升变量么,为什么第一个打印出a的值是undefined?

var a = 100; function test () {     console.log(a);//undefined
       
     var a = 200; 
     
     console.log(a);//200  
 }  

 test();

请大神们指点迷津......


Helenr
浏览 444回答 1
1回答

慕码人2483693

1.你的a没有赋值自然是undefined,请用 var a=0,b=0;2.test()下的a会在函数内变量提升,相当于function test(){     var a;     console.log(a);     a=200;     console.log(a); }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript