javascript - js函数声明和执行的问题
PHP中文网
PHP中文网 2017-04-11 12:53:25
[JavaScript讨论组]

浏览器控制台环境:
一:

    var a = function(num){
        b(num);
    }
    a(1);
    var b = function(num){
        console.log(num)
    }

二:

    function a(num){
        console.log(num)
    }
    a(1);
    function b(num){
        console.log(num)
    }

记得在高程看过,function定义的函数会前置,而var定义的函数只是声明会前置。那么代码二无疑是可以打印出1的;但是代码一也能打印出1,我不明白的是当a调用的时候,b函数还未声明,此时为何可以打印出1呢?

另外:

var c = (function(){
    var init = function(){
     a(1);
    };
    var a= function(num){
        b(num);
    };
    var b =function(num){
        console.log(num);
    };
    return{
        init: init
    };
})();
    c.init();

init在a之前声明,为何能调用a?

PHP中文网
PHP中文网

认证0级讲师

全部回复(6)
天蓬老师
  1. 第一段代码绝不可能打印出1

  2. 第二段代码你是直接返回了init,那时候它里面还没运行,到最后c.init()的时候才运行了,然后才运行里面的a(1);,这当然是没有问题的。

大家讲道理

想必在控制台玩吧,执行完二立刻执行一

怪我咯

在浏览器汇中,没有刷新页面吧

黄舟

我不明白的是,你是用什么环境测试的第一段代码会打印出1

大家讲道理

显然第一段代码不会打印出1,浏览器测试也是并不会打出1,楼主是否贴错代码了

天蓬老师

你要是在浏览器控制台测试的话,没换页面之前的输入会影响后面的输入的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号