Javascript: vad betyder denna syntax (0,functionName)(functionParemeter);


Jag undrade i JavaScript-filen från källan på http://www.google.com, faktiskt gör jag det ofta och försöker förstå vad de har gjort där. Idag undrade jag inne i filerna och hittade några konstiga funktionsanrop. Kanske är det en dum sak men jag har verkligen ingen aning om vad det är och därför kunde jag inte hjälpa till genom att söka efter det.

en läsbar likhet av koden-

var someFunction = function(somaeParamenter){
    //do some stuffs;
    return something;
}

var someOtherThing = (0, someFunction)(oneParameter);

Vänligen ursäkta min brist på kunskap.

REDIGERA:

Källa-

Jag använder Chrome. Medan jag hade sidan http://www.google.com öppen, öppnade jag utvecklarverktyget. Sedan öppnade jag fliken Källor och öppnade filen https://www.google.com.bd/xjs/_/js/s/c,sb,cr,cdos,vm,tbui,mb,wobnm,cfm,abd,bihu,kp,lu,m,tnv,amcl,erh,hv,lc,ob,r,rsn,sf,sfa,shb,srl,tbpr,hsm,j,p,pcc,csi/rt=j/ver=WUW4ydIf-wI.en_US./am=gA/d=1/sv=1/rs=AItRSTPu52CumknQsh0was81vrM4inla_w i visningsfönstret. Den här filen är den enda JS-filen jag har sett där. Jag aktiverade "pretty print" och på rad 58 hittar du definitionen-

_.Va = function(a) {
            var b = typeof a;
            if ("object" == b)
                if (a) {
                    if (a instanceof window.Array)
                        return "array";
                    if (a instanceof window.Object)
                        return b;
                    var c = window.Object.prototype.toString.call(a);
                    if ("[object Window]" == c)
                        return "object";
                    if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice"))
                        return "array";
                    if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call"))
                        return "function"
                } else
                    return "null";
            else if ("function" == b && "undefined" == typeof a.call)
                return "object";
            return b
        };

och på rad 83 kommer du att se att funktionen anropas.

_.Za = function(a) {
            return "array" == (0, _.Va)(a)
        };

Svar #1

(0, someFunction)

returnerar helt enkelt someFunction

så det här är bara motsvarande

var someOtherThing = someFunction(oneParameter);

Är du säker på att du skrev det exakt som det var? Om så är fallet, och om det inte var någon form av förvrängning, kan det då vara det olyckliga resultatet av någon form av minifiering. Om den verkliga koden hade varit lite annorlunda, till exempel (0, someObject.someFunction), kan det finnas någon användning av detta indirekta funktionsanrop.

REDIGERA :

Din redigering bekräftar att målet förmodligen var att säkerställa att this, inuti funktionen, är det globala objektet (window i en webbläsare) och inte objektet som Va var kopplat till (_).