为什么我的javascript函数没有对我的全局变量应用更改?

时间:2014-11-27 12:07:42

标签: javascript arrays function variables global

在javascript中,我将全局变量“sentimentValues”实例化如下:

var sentimentValues = [
    {txt: "good", num: 0},
    {txt: "bad", num: 0},
    {txt: "neutral", num: 0}
    ];

我后来有一个函数,其中操纵全局变量“sentimentValues”。 该函数如下所示,其中data是从csv文件创建的数组,每个d是csv文件中的一个条目。

data.forEach(function(d){
            var strArray = d.message.split(" ");

            d.sentiment = calculateSentiment(strArray);
            if(d.sentiment == "good")
                sentimentValues[0].num += 1;
            else if(d.sentiment == "bad")
                sentimentValues[1].num += 1;
            else
                sentimentValues[2].num += 1;    
        })

“calculateSentiment”功能如下:

    function calculateSentiment(wordArray)
    {
                var goodCount = 0;
                var badCount = 0;
                for(var i = 0; i<wordArray.length; i++)
                {
                    for(var index = 0; index<happyWords.length; index++)
                    {
                        if(happyWords[index] == wordArray[i])
                        {
                            goodCount++;
                        }
                    }

                    for(var index = 0; index<sadWords.length; index++)
                    {
                        if(sadWords[index] ==wordArray[i])
                            badCount++;
                    }
                }
                if(goodCount > badCount)
                    return "good";
                else if(badCount > goodCount)
                {
                    return "bad";
                }
                else
                    return "neutral";
    }

和happyWords,sadWords被定义为:

    var sadWords;
    var happyWords;

    $.get('happyWords.txt',function(data){
        happyWords = data.split('\n');
    });

    $.get('sadWords.txt',function(data){
        sadWords = data.split('\n');
    });

调用函数后,我将这两行称为:

console.log(sentimentValues);
console.log(sentimentValues[0]);

第一个日志语句正确反映了函数中所做的更改(即sentimentValues [0] .num为2)。第二个日志语句没有。

- 控制台中第一个语句的输出扩展为显示sentimentValues [0] .num为2
- 控制台中第二个语句的输出显示sentimentValues [0] .num为0 ...

可在此处查看控制台输出的屏幕截图:http://lmc.gatech.edu/~epramer3/consoleOutput

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

当然,如果您粘贴更多代码会有所帮助,但首先尝试更改变量名称“values”。

编辑: 我检查了你的代码和截图,甚至尝试了你的代码,输出按预期进行。 您似乎正在使用Google Chrome,您是否尝试过一些简单的步骤,例如重新启动浏览器或完全尝试其他浏览器?