2

下面的代码尝试创建一个模块化代码块,如果 jQuery(依赖项)不存在,它会静默失败。

(function($, undefined){
    if ( $ === undefined ){
        // Do some stuff here
        return;
    }

    // Rest of the code
})(jQuery);

但是当我不包含 jQuery 时,它会引发以下 JS 错误,这是我首先真正想要测试的场景。

Uncaught ReferenceError: jQuery is not defined

我不得不求助于更丑陋的代码版本。

(function($, undefined){
    if ( $ === null ){
        // Do some stuff here
        return;
    }

    // Rest of the code
})( (typeof jQuery !== "undefined") ? jQuery : null );

有人知道这样做的更好方法吗?

4

2 回答 2

4

如果出于任何原因需要它,可以这样做:

(function($, undefined){
    if ( $ === undefined ){
        alert('not defined');
        return;
    }

    // Rest of the code
})(window.jQuery); //if property on global object not defined, no error is thrown
于 2013-09-11T14:29:40.923 回答
2

有人知道这样做的更好方法吗?

不要将其作为论据传递。关闭仍然有效:

(function(undefined){
    if ( typeof jQuery == "undefined" ){
        // Do some stuff here
        return;
    } else {
        var $ = jQuery;
    }
    // Rest of the code
})();
于 2013-09-11T14:28:44.520 回答