2013-05-04 13 views
5

http://www.google.comの出典からjavascriptファイルを探していましたが、実際に私は頻繁に行い、彼らが行ったことを理解しようとしています。今日私はファイルの中で不思議に思っていたいくつかの奇妙な関数呼び出しを発見した。多分それは愚かなことですが、私は本当にそれが何であるか分かりませんので、私はそれを探して助けができませんでした。Javascript:この構文は何を意味しますか(0、functionName)(functionParemeter);

読みはコード -

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

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

の似ている知識の私の不足を言い訳してください。

EDIT:

ソース -

私はクロムを使用しています。 http://www.google.comページが開かれているうちに、私は開発者用ツールを開いた。ソースタブを開き、ビューアに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というファイルを開きました。このファイルは私がそこに見た唯一のjsファイルです。私は "かわいいプリント"を有効にして、58行目でdefineを見つけます。

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

そして83行目で関数が呼び出されます。

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

正確なソースを引用できますか?私はhttp:// www.google.com/' – Bergi

+1

で配信されたものでは見つけられません。サイドノート:GoogleのJSは大きく最適化され、縮小されているため、おそらく影響を受けるのに最適な場所ではありません。 – JJJ

+0

@Juhanaあなたは正しいですが、私はそこに覗いて自分自身に抵抗することはできません:) – maksbd19

答えて

7
(0, someFunction) 

は、単にので、これは

var someOtherThing = someFunction(oneParameter); 

あなたはそれがあったように、あなたは正確にそれを入力よろしいですとちょうど同じですsomeFunction

を返しますか?そうであれば、それは何らかの種類の難読化ではなかったなら、それはある種の縮小の不幸な結果かもしれません。実際のコードが少し異なる場合、たとえば(0, someObject.someFunction)のように、indirect function callの使用があるかもしれません。

EDIT:

あなたの編集は、それは目標はthisは、関数内で、グローバルオブジェクト(ブラウザでwindow)とないVaが添付されたオブジェクト(_)であることを保証するために、おそらくだったことを確認。

+0

「0」ではなく、代入や関数呼び出しなどの表現をしている可能性があります。 – Zirak

+0

'(Potato、私は思うが)それは難読化の結果である。 – Doorknob

+0

(かっことカンマ)は明確に(難読化されている)コード... –

関連する問題