Javascript:" undefined"变量

时间:2015-07-14 14:05:11

标签: javascript function scope undefined

newbee to Javascript ...

我在使用函数结果更新全局变量时遇到了问题。当我输出变量时,它表示' 未定义 '。

我想要做的是循环一个数组( problemArr )并在变量中创建一个字符串( stringA )。

然后将 stringA 添加到另一个变量 stringMessage 并输出stringMessage的值。

例如:您最大的问题是:Prob1,Prob2,Prob3,

我已经有了一个名为problemArr的数组,该数组从另一个函数中更新,这个函数我还没有包含在这段代码中。 (这部分有效,我能够证明数组得到​​了更新)。

我已经在这里阅读了一些关于功能范围和提升的帖子,我认为这些帖子可能与它有关。不确定。

var stringA = ' ';//initialize variable which will form list of problems 

var stringMessage ='Your biggest problems are :' + stringA; // Output

var problemArr[]; //Empty array. Gets elements from another function - this part works, I've checked. 

//create list of problems
function messageString(){

    for(i in problemArr){

        stringA = stringA + problemArr[i] + ',';
    }

    return stringA;

}

3 个答案:

答案 0 :(得分:1)

你需要定义你的数组,然后调用你创建的函数,如下所示。



var stringA = ' ';//initialize variable which will form list of problems 

var problemArr = ['1','2','3']; // <<<<<<<<< define the array

//create list of problems
function messageString(){

    for(i in problemArr){

        stringA += problemArr[i] ; 
        
        // do not add a comma after the last array item
        if(i < problemArr.length - 1)
        {
           stringA  += ',';
        }
    }

}

messageString(); // <<<<<<<<< call the function

var stringMessage ='Your biggest problems are :' + stringA; // Output

document.write(stringMessage);
&#13;
&#13;
&#13;

修改

要匹配您的情况,请调用该函数创建消息字符串并填充stringA,然后将其设置为最后的输出var stringMessage ='Your biggest problems are :' + stringA; // Output

答案 1 :(得分:1)

尝试用字符串替换字符串,字符串总是必须是一个新变量,所以而不是stringA = stringA你需要newString = stringA +“,”

我重构了你的代码,这将做你想做的事情:

(function () {
    var stringA;
    var stringMessage = "Your biggest problems are : ";
    var problemArr = [1, 2, 3, 4, 5, 6];

    for (var i = 0; i < problemArr.length; i++) {
        stringA = problemArr[i] + ",";
        stringMessage += stringA;
    }

    alert(stringMessage);

})()

“+ =”运算符将某些内容附加到现有对象 例如1 += 2等于3 例如"hello" += "world"等于“helloworld”

答案 2 :(得分:0)

看起来你只是想尝试将数组的内容添加到字符串变量中。为什么不这样做:

var problemArr = ["99 problems","but a b****","ain't one"];
//or just use the array you created before

var problemsAsString = problemArr.join(", ");
//converts the array to a string and puts a ", " between each element

var stringMessage = 'Your biggest problems are : ' + problemsAsString; 

alert(stringMessage); //output, or do whatever you want with it

JSFiddle