迷失在JavaScript范围内

Chr*_*ris 0 javascript scope event-handling

有人可以帮我解决下面的(简化)代码.我试图doTheSlide()从幻灯片事件函数中调用该函数.我对JS的范围理解还是有点阴暗.

实现这一目标的正确方法是什么?我收到这个错误:

Uncaught TypeError: object is not a function

(function($) {

    bindEvent = function(slider) {

        slider.bind('slide', function(event, ui) {

            doTheSlide(ui.value);
        });
    }

    doTheSlide = function(value) {
        //Animate the slide
    }


    var methods


})(jQuery);
Run Code Online (Sandbox Code Playgroud)

bea*_*mit 5

你需要在某处声明'doTheSlide'.您似乎将其用作全局函数,这在大多数情况下都是错误的.确保所有内容都正确声明(使用var或使用命名函数).

这是您的代码的固定版本(我喜欢它的方式):

(function($) {
    function doTheSlide(value) {
        //Animate the slide
    }

    function bindEvent(slider) {
        slider.bind('slide', function(event, ui) {
            doTheSlide(ui.value);
        });
    }
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

记得在使用之前声明函数.它将调用稍后声明的函数,但它不是好的样式.

替代语法:

(function($) {
    var doTheSlide = function(value) {
        //Animate the slide
    };

    var bindEvent = function(slider) {
        slider.bind('slide', function(event, ui) {
            doTheSlide(ui.value);
        });
    };
})(jQuery);
Run Code Online (Sandbox Code Playgroud)