Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回但在函数中执行逻辑?_Javascript - Fatal编程技术网

Javascript 返回但在函数中执行逻辑?

Javascript 返回但在函数中执行逻辑?,javascript,Javascript,我希望getNum()具有该值,而不是在函数中对其进行控制台操作。如果我在函数中执行返回num[indexRandom],之后的逻辑将中断。有线索吗 $(文档).ready(函数(){ var num=['1','2','3','4','5']; var-temp=[]; $(“按钮”)。在(“单击”,函数(){ getNum(); }); 函数getNum(){ 如果(num.length我强烈建议不要这样做。我会将num[indexRandom]存储为一个简单变量,并在末尾返回,但如果您按

我希望getNum()具有该值,而不是在函数中对其进行控制台操作。如果我在函数中执行
返回num[indexRandom]
,之后的逻辑将中断。有线索吗

$(文档).ready(函数(){
var num=['1','2','3','4','5'];
var-temp=[];
$(“按钮”)。在(“单击”,函数(){
getNum();
});
函数getNum(){

如果(num.length我强烈建议不要这样做。我会将
num[indexRandom]
存储为一个简单变量,并在末尾返回,但如果您按照自己的方式进行设置,则使用以下方法:

try { //Return
    return num[indexRandom];
}
finally { //Code to run after returning. This will always happen after returning.
    temp.push(num[indexRandom]);
    num.splice(indexRandom,1);
}

在所有其他处理完成后,您需要将该值作为函数的最后一行返回,但是,正如您可能已经意识到的,您不能只使用
return num[indexRandom]
,因为
.splice()
语句正在从数组中删除该项。因此,只需使用一个临时变量:

function getNum() {
    if (num.length <= 0) {
        num = temp;
        temp = [];
    }
    var indexRandom = Math.floor(Math.random() * (num.length));
    var selectedNum = num[indexRandom]);  // <-- add this
    temp.push(selectedNum);
    num.splice(indexRandom, 1);
    return selectedNum;                   // <-- add this
}

有一个解决方案:

function getNum() {
    if (num.length <= 0) {
        num = temp;
        temp = [];
    }
    var indexRandom = Math.floor(Math.random() * (num.length));
    var result = num[indexRandom];
    //console.log(num[indexRandom]);
    temp.push(num[indexRandom]);
    num.splice(indexRandom, 1);
    return result;
}
函数getNum(){
如果(num.length),只需添加
返回num[indexRandom]
在函数末尾?不,拼接将终止它。他们需要将其存储在一个临时变量中,然后返回that@AndrewL.这并不是那么简单,返回值应该返回到哪里?试试看,最终在javascript中是合法的吗?我以前从来没有见过这个。是的,不要这样做。只需使用一个临时变量。它是functi是的,但再次强调,不要这样做。这是一种非常粗糙的方法,你应该把它存储在一个变量中,然后在事后返回。好吧……你不需要它,因为你可以用第二种方法而不需要额外的变量。但是任何一种方法都可以。第二种方法更干净。但是为什么你需要这样做呢?
temp.push(num[indexRandom])
?该部分来自原始函数。它所做的是每次调用
getNum()
时,它从
num
数组中删除一个随机项,并将该项添加到
temp
数组中。然后,当
num
为空时,它最终将其设置回
temp
(这就是函数开头的
if
语句所做的)。其思想是,它将随机循环数组中的所有数字一次,而不重复任何数字,然后重新开始。
function getNum() {
    if (num.length <= 0) {
        num = temp;
        temp = [];
    }
    var indexRandom = Math.floor(Math.random() * (num.length));
    var result = num[indexRandom];
    //console.log(num[indexRandom]);
    temp.push(num[indexRandom]);
    num.splice(indexRandom, 1);
    return result;
}