$(function() {}之间列举一系列的函数和变量是声明javascript变量和函数吗?

在一个页面源码<body>块底部看到

    <script>
        $(function() {
            sSwiperFun(); //幻灯片调取
            upSlideFun("#iQuestion"); //向上滚动互动
            scrollLoad(); //响应滚动加载课程图片
            $(".boutiqueCourse").click();//网校课程-精品课程
            huanyihuan();
            studentDynamic();//学生动态



            var uri = window.location.search;
            var val = "msg";
            var re = new RegExp("" + val + "=([^&?]*)", "ig");
            var msg=((uri.match(re)) ? (uri.match(re)[0].substr(val.length + 1)) : null);
            if(msg!=null && msg!='' && msg=='LimitLogin'){
                dialog('提示信息',"您的帐号在其他地点登录,请重新登录",1);
            }
        });
    </script>

这是声明一系列的javascript函数和变量吗?

这些函数如果在引入的js文件里,不是可以直接用吗?为何还要额外声明?
另外,这里还有一个if语块,这表明 $(function() {}之间的东西不仅仅是声明,还包括要运行的语句?

阅读 4.1k
5 个回答

$(function() {}之间的东西会在页面加载完毕后执行。

建议阅读jQuery文档。了解$(function(){})与window.onload区别;

虽然你试图区分“声明”跟“执行”,虽然这是js的基本功,但是在这里显然没必要,$(function() {}之间的东西会在页面加载完毕后执行,你把声明挪到代码块之外,把执行放到代码块之内,当然也是可以的,不过纯属增加代码的阅读难度,而且需要跨作用域读取声明,百害无一利,为什么要拆开?

另外sSwiperFun();应该是一个叫sSwiper的组件,通常组件js文件只提供方法定义,不提供方法执行,因为它并不知道你需要在什么场合什么情况下执行。你说的“这些函数如果在引入的js文件里,不是可以直接用吗?为何还要额外声明?”并不是,sSwiperFun();是执行,不是声明。

$(function() {})就是$.ready(function(){})的简写形式。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题