-2

誰かが私にこの JS 短縮コードを説明してくれますか?

   navigator.sayswho = (function(){
      var N= navigator.appName, ua= navigator.userAgent, tem;
      var M= ua.match(/(opera|chrome|safari|firefox|msie|Trident)\/?\s*(\.?\d+(\.\d+)*)/i);
      if(M && (tem= ua.match(/version\/([\.\d]+)/i))!= null) M[2]= tem[1];
      M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
      return M;
   })();

コードは機能していますが、特に次の行がどのように機能しているか理解できません。

M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
4

2 に答える 2

6

これ:

M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];

意味:

if (M)
  M = [M[1], M[2]];
else
  M = [N, navigator.appVersion, '-?'];

より詳細には、「M」が空でないかどうかを確認します。この場合、ユーザーエージェントの正規表現が実際のユーザーエージェント文字列と一致したことを意味します。設定されている場合は、「M」を新しい配列にリセットします。事実上、元の「M」のゼロ番目の要素を削除するだけです。

設定されていない場合は、アプリケーション名、バージョン文字列、および認識されていないユーザー エージェントであることを示すマーカー文字列のように見えるものから「偽の」配列を作成します。

于 2013-11-12T14:45:56.290 に答える