2017-02-14 19 views
0

モジュールファイルquery-type.jsにあるオブジェクトを、switch文に渡される文字列に基づいてグローバル変数(app.js)に渡そうとしていますが、何らかの理由で私のケースでコンソールログが正しくparamsオブジェクトを出力しているにもかかわらず、私のグローバルparamsに値を設定しているようです。私のconsole.log(params)はどちらの場合でも実行されていますが、グローバルスコープconsole.log('These are the params ' + params);は表示されません。なぜこの現象が起こっているのかについての考えはありますか?Javascript - Nodejsグローバル変数が変更されない

グローバルJSファイル(スイッチおよびグローバル変数):

function keywordQuery(auth) { 

    var authSheets = auth; 

    var siteUrl = encodeURIComponent('http://www.test-site.com/'); 

    var params; 

    switch(process.argv[2]){ 
     case "allTrafficQuery": 
     params = webmasterQuery.allTrafficQuery(auth, siteUrl); 
     return console.log(params); 
     break; 
     case "usaTrafficQuery": 
     params = webmasterQuery.usaTrafficQuery(auth, siteUrl); 
     return console.log(params); 
     break; 
     default: 
     params = ("Error"); 
    }  

    console.log('These are the params ' + params); 
    } 

モジュールファイル:あなたのswitch文ケース内

module.exports = { 

    allTrafficQuery: function(authToken, siteUrlEncoded){ 
     var allTraffic = { 
      auth: authToken, 
      siteUrl: siteUrlEncoded, 
      resource: { 
       'dimensions': ['query'] 
      } 
     } 
     return allTraffic; 
    }, 

    usaTrafficQuery: function(authToken, siteUrlEncoded){ 
     var usaTraffic = { 
      auth: authToken, 
      siteUrl: siteUrlEncoded, 
      resource: { 
       'dimensions': ['query'], 
       'dimensionFilterGroups': [{ 
        'filters': [{ 
        'dimension': 'country', 
        'operator': 'equals', 
        'expression': 'USA' 
        }] 
       }] 
      } 
     } 
     return usaTraffic; 
    } 

}; 
+0

さて、あなたは 'keywordQuery()'をどこで呼びますか? – Bergi

答えて

4

あなたは、関数の外に戻ってきています。

はこちらをご覧ください:

case "usaTrafficQuery": 
    params = webmasterQuery.usaTrafficQuery(auth, siteUrl); 
    return console.log(params); // This ends the function execution 
    break; 

だから、switch文(あなたが問い合わせるされている、すなわちconsole.log)後のロジックが実行されません。それはdefaultの場合には(returnがないので)あなたが期待するように動作するはずです。

+0

スイッチとリターンスコープの使用に関する誤解に対する簡単な修正。ありがとうございました! :) – cphill