Javascript - Nodejs切换全局变量不变

时间:2017-02-14 19:45:26

标签: javascript node.js switch-statement

我正在尝试根据传递给我的switch语句的字符串将位于我的模块文件query-type.js中的对象传递给全局变量(app.js),但由于某种原因,我可以似乎将值设置为我的全局params,尽管我的案例中的控制台日志正确输出params对象。我的console.log(params)正在针对这两种情况运行,但全局范围console.log('These are the params ' + params);甚至没有出现。有关为什么会发生这种行为的任何想法?

全局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);
  }

模块文件:

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

};

1 个答案:

答案 0 :(得分:4)

在你的switch陈述案例中,你将退出该职能部门。

见这里:

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

因此,switch语句之后的逻辑(即您正在查询的console.log)不会被执行。如果它落在default的情况下(因为它没有return),它应该按预期工作。