JavaScriptの面接問題--変数の昇格とタイプの転換


var b=1;
function outer(){
    var b=2;
    function inner(){
        b++;
        console.log(b);
        var b=3;
    }
    inner();
}

outer();
この面接問題の答えはNaNですか?なぜですか?長い間見ていても理解できないという意味で、急に分かりました.メモしてください.
inner()この中の最初のコードはb++で、変数bを使って、最後にまた1つのvar b=3があります.変数が上昇し、
var b=1;
function outer(){
    var b=2;
    function inner(){
        var b ;//  b      b undefined
        b++;//b=b+1;undefined  number  ,b   NaN
        console.log(b);
         b=3;
    }
    inner();
}

outer();
まとめ:この問題は変数の昇格とタイプの転換を試験します.