问一个编码经验的有关问题,这样写好不好

问一个编码经验的问题,这样写好不好
才学js的jquery,老师用jquery做了个滚动图片的效果。
他是将滚动图片的所有相关代码(包括变量、事件绑定、时钟设置等),全部写入一个函数内,然后在ready里面调用。
我想问的是:实际开发中,这种将相关的JS代码定义到一个函数内常用吗? 我感觉这样做的话,后面时钟每次执行,上面的变量不会找不到么。 总感觉怪怪的。
主要之前一直学C#、java等,js的写法实在太怪了。一时理解不了,求解答问一个编码经验的有关问题,这样写好不好
代码:
<script>
$(document).ready(function() {
    //轮换图片
    function changeImg(){

//加载后只走一遍
        var index=0;
        var stop=false;
        var $li=$("#scroll_img").children("li");//所有图片
        var $page = $("#scroll_number").children("li");//所以可点击按钮
        $page.eq(index).addClass("scroll_number_over").siblings().removeClass("scroll_number_over");


//鼠标放上后执行
        $page.mouseover(function(){
            stop=true;
            index=$page.index($(this));
            $li.eq(index).fadeIn().siblings().fadeOut();
            $(this).addClass("scroll_number_over").siblings().removeClass("scroll_number_over");
        }).mouseout(function(){
            stop=false;
        });

//循环执行
        setInterval(function(){

            if(stop){ return};
            index++;
            if(index>=$li.length){
                index=0;
            }
            $li.eq(index).fadeIn().siblings().fadeOut();
            $page.eq(index).addClass("scroll_number_over").siblings().removeClass("scroll_number_over");
        },3000);
    }

    changeImg();
});
</script>

------解决思路----------------------
js作用域问题!

var a = 'asd';
var b = function() {
    alert(a); //虽然b内没有定义a 但是由于a与b作用域相同!所以b内可以访问a变量
}

var c = function() {
    var a = 'qwe';
    alert(a); //所以c定义了a 所以使用函数内部的a变量
}

var d = function() {
    a = 'qwe'; //没有使用var声明变量 将会覆盖上级作用域的变量
    alert(a); //弹出qwe
}


b(); //弹出asd
alert(a); //a的值不变 弹出asd
c(); //弹出qwe
alert(a); //a的值不变 弹出asd
d(); //弹出qwe
alert(a); //a的值变为qwe  弹出qwe

------解决思路----------------------
这样写可以把滚动相关的代码集中在一个地方,有利于代码维护。另外js的作用域相关的知识你可能还没搞清楚,去看看js基础教程吧
------解决思路----------------------
都可以,changeImg()函数就像好像是初始化函数初始化滚动相关的代码。整个ready(function() 函数就是一个初始化。