2013-05-04 8 views
5

Ich frage mich, in die JavaScript-Datei von der Quelle der http://www.google.com ich es wirklich tun oft und versuchen zu verstehen, was sie dort getan haben. Heute habe ich mich in den Dateien gewundert und einige seltsame Funktionsaufrufe gefunden. Vielleicht ist es eine dumme Sache, aber ich habe wirklich keine Ahnung, was es ist und so konnte ich nicht helfen, indem ich danach suchte.Javascript: Was bedeutet diese Syntax (0, Funktionsname) (functionParemeter);

lesbarer ähneln der Code-

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

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

Bitte meinen Mangel an Wissen entschuldigen.

EDIT:

Quelle-

i Chrom bin mit. während in der http://www.google.com Seite geöffnet, öffnete ich das Entwickler-Tool. Dann habe ich die Registerkarte Quellen geöffnet und die Datei 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 im Viewer geöffnet. Diese Datei ist die einzige js-Datei, die ich dort gesehen habe. Ich konnte die „ziemlich print“ und 58 in Zeile sehen Sie die defination-

_.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 
     }; 

und in Zeile 83 werden Sie sehen, die Funktion finden aufgerufen.

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

Kann zitieren Sie die genaue Quelle, bitte? Ich finde es nicht in dem, was ich unter http://www.google.com/de/ – Bergi

+1

geliefert bekomme. Hinweis: Googles JS ist stark optimiert und minimiert, daher ist es wahrscheinlich nicht der beste Ort, um Einflüsse zu nutzen. – JJJ

+0

@Juhana du hast Recht, aber ich kann mich nicht selbst davon abhalten, dort zu spähen :) – maksbd19

Antwort

7
(0, someFunction) 

gibt einfach someFunction

so dies

nur gleichwertig ist
var someOtherThing = someFunction(oneParameter); 

Sind Sie sicher, dass Sie es genau eingegeben, wie es war? Wenn ja, und wenn es keine Art von Verschleierung war, dann könnte es das unglückliche Ergebnis einer Vermin- derung sein. Wenn der echte Code ein wenig anders wäre, zum Beispiel (0, someObject.someFunction), könnte es eine Verwendung dieses indirect function call geben.

EDIT:

Sie bearbeiten, dass es bestätigt das Ziel wahrscheinlich, dass this, innerhalb der Funktion, das globale Objekt (window in einem Browser) ist und an dem nicht das Objekt, um sicherzustellen, war Va angebracht wurde (_) .

+0

Anstelle von "0" hatten sie wahrscheinlich einen Zuweisungs- oder Funktionsaufruf oder einen anderen Ausdruck. – Zirak

+0

'(Kartoffel, glaube ich) es das Ergebnis obfuscation.' – Doorknob

+0

ist (Parenthesis und Komma) deutlich (verschleiern, der Code) ... –