Sandbox实现中的字符串比较

时间:2015-05-21 14:11:09

标签: javascript

我在参考Sandbox实现中遇到了这段代码(代码如下)。我认为这个实现是众所周知的,因为它是JQuery的一部分,也在我正在阅读的书中引用。

    var Sandbox = function(){
        var args = Array.prototype.slice.call(arguments);  
        var callback = args.pop();
        var modules = (args[0] && typeof args[0] === 'string') ? args : args[0];
        var i;
        ...
        if(!modules || modules === '*'){
            modules = [];
            for(i in Sandbox.modules){
                if(Sandbox.modules.hasOwnProperty(i)){
                    modules.push(i);
                };
            };
        };
..

Sandbox()需要" *"作为它的第一个参数和一个回调作为它的第二个参数。问题是关于第一个论点。

即。如果我打电话

new Sandbox("*", function X() {});

' if'条件将失败

if(!modules || modules === '*') {

我的调查显示'类型的模块'是对象'在此行之后,当args [0]为任何字符串时。

var modules = (args[0] && typeof args[0] === 'string') ? args : args[0];

但Sandbox实现期望if条件为真。

所以,这里有什么问题......

0 个答案:

没有答案
相关问题