0

私はjavascript webappを担当しています。非常に複雑で、構文に問題があります。

getThemeBaseUrl = function() {
  var customConfigPath = "./customer-configuration";                    
  if (parseQueryString().CustomConfigPath) {                           
    customConfigPath = parseQueryString().CustomConfigPath;
  }
  var clientId = parseQueryString().ClientId; 

  return customConfigPath + "/themes/" + clientId;
};

parseQueryString = function() {
  var result = {}, queryString = location.search.substring(1), re = /([^&=]+)=([^&]*)/g, m;
  while ( m = re.exec(queryString)) {
    result[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
  }
  return result;
};

特にparseQueryString().CustomConfigPathvar result = {}, queryString = location.search.substring(1), re = /([^&=]+)=([^&]*)/g, m;

1 つ目は、parseQueryString 関数による一種のプロパティ アクセスのようです。

2 番目は配列宣言のように見えますが、Array() コンストラクターがありません。また、mwhile サイクルで推定配列結果なしで値がリコールされます。

4

2 に答える 2

0

parseQueryString().CustomConfigPathparseQueryStringオブジェクトを返す関数を呼び出します。CustomConfigPath次に、そのオブジェクトのプロパティにアクセスします。関数の最初の 4 行の一般的なイディオムは次のとおりです。

var customConfigPath = parseQueryString().CustomConfigPath || "/.customer-configuration";

var result = {}, queryString = location.search.substring(1), re = /([^&=]+)=([^&]*)/g, m配列ではなく、4 つの異なる変数の宣言です。

  • result空のオブジェクトです
  • queryStringは、現在の URL から?削除されたクエリ文字列です。
  • re正規表現です
  • mは初期化されていない変数であり、whileループの後半で割り当てられます。
于 2013-10-13T17:19:52.597 に答える