「已注销」 2020-06-22 12:50 采纳率: 0%
浏览 324
已采纳

在控制台打印,最后发现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..L 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:方法名和参数的命名最好是区分开来

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)