变量提升

面试题,如下代码输出什么

var a = 'global'
 function fn() {  
    console.log(a)
     if(false){
         var a = 'local'; 
     }   
    console.log(a)  
 }
 fn()

结果是

undefined

undefined

为什么会这样,而不是输出global,因为函数内有var a,即使不执行,也会变量提升。相当于如下代码

var a = 'global'
 function fn() { 
     var a;
    console.log(a)
     if(false){
         a = 'local'; 
     }   
    console.log(a)  
 }
 fn()

 

posted @ 2022-05-22 22:41  方小川  阅读(14)  评论(0编辑  收藏  举报