weixin_46344410
2020-06-22 12:50
采纳率: 50%
浏览 309

在控制台打印,最后发现console.log('5=>', a)打印出的a为1,这是为什么呢?

var a = 0;
    if(1) {
        console.log('1=>', a);
        a = 1;
        console.log('2=>', a);
        function a() {};
        console.log('3=>', a);
        a = 21;
        console.log('4=>', a);
    }
    console.log('5=>', a);

##打印结果:

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • Sky.Long 2020-06-22 14:56
    已采纳

    因为你的 function a() {};放置的位置引起的a不同;

    1.function a() {}之前的a是一个变量,a=0;a=1;

        console.log('1=>', a);
        a = 1;
        console.log('2=>', a);
        function a() {};
    

    2.function a() {}之后的a是一个方法,这个方法等于a

       function a() {};
        console.log('3=>', a);
        a = 21;
        console.log('4=>', a); 
    

    但是你的if(1)外面又打印了一个console.log('5=>', a);,这时候的a是一个变量来的,这时候的a就等于function a() {};之前最近的一个a=1;

    举个例子,假如你在

        a = 1;
        console.log('2=>', a);
        function a() {};
    

    这里改成,增加了一个a=2;

        a = 1;
        console.log('2=>', a);
        a = 2;
        function a() {}; 
    

    那最后console.log('5=>', a); 会打印出a=2;

    总的来说,你的a 到底是想要当成参数还是要当成方法来用,如果要当成方法,就把 function a() {};放在if(1)外面;

    ps:方法名和参数的命名最好是区分开来

    点赞 评论

相关推荐 更多相似问题