Javascript - 为什么有时使用return时它是“未定义的”?

时间:2017-10-23 03:15:25

标签: javascript

以下代码有效:

var myArray = [];
function myFunc(){
    var randomNumber = Math.floor(Math.random() * 4);
    if(myArray.indexOf(randomNumber) == -1){
        myArray.push(randomNumber);
        console.log(randomNumber); //; didn't use return
    } else {
        myFunc();
    }
}
for(let i=0; i<4; i++){
    myFunc();
}

虽然以下情况并非如此,但两者几乎相同,只是以下是使用“return”。

var myArray = [];
function myFunc(){
    var randomNumber = Math.floor(Math.random() * 4);
    if(myArray.indexOf(randomNumber) == -1){
        myArray.push(randomNumber);
        return randomNumber; // using return
    } else {
        myFunc();
    }
}
for(let i=0; i<4; i++){
    console.log(myFunc());
}

结果可能与随机数不一样,请尝试多次刷新。

我想使用return,以便值可以保存到函数中。

谢谢大家。

1 个答案:

答案 0 :(得分:2)

它会返回undefined,因为您在myArray.indexOf(randomNumber) != -1时没有返回任何内容。尝试:

function myFunc(){
    var randomNumber = Math.floor(Math.random() * 4);
    if(myArray.indexOf(randomNumber) == -1){
        myArray.push(randomNumber);
        return randomNumber; // using return
    } else {
        return myFunc();
    }
}