如何处理未定义的函数参数

时间:2013-09-11 14:22:34

标签: javascript jquery

以下代码是尝试创建模块化代码块,如果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 );

有人知道更好的方法吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

  

有人知道更好的方法吗?

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

(function(undefined){
    if ( typeof jQuery == "undefined" ){
        // Do some stuff here
        return;
    } else {
        var $ = jQuery;
    }
    // Rest of the code
})();