如何在JavaScript中返回forEach循环内部的值
我被我的代码卡住了 我写这个示例代码只是为了重现我的问题,所以这个代码根本不实用,但我希望你明白我的意思 在下面的代码中,对于要输出的最后一个值,我希望它是3,但它是未定义的 在这种情况下,如果我希望最后一个值为3,我应该如何写入 这只是一个示例代码,但在实际代码中,我从AmazonAPI获取内容,当它返回api错误时,我希望在1000毫秒后再次运行相同的函数如何在JavaScript中返回forEach循环内部的值,javascript,Javascript,我被我的代码卡住了 我写这个示例代码只是为了重现我的问题,所以这个代码根本不实用,但我希望你明白我的意思 在下面的代码中,对于要输出的最后一个值,我希望它是3,但它是未定义的 在这种情况下,如果我希望最后一个值为3,我应该如何写入 这只是一个示例代码,但在实际代码中,我从AmazonAPI获取内容,当它返回api错误时,我希望在1000毫秒后再次运行相同的函数 var list = [1,2,3]; var someClass = new SomeClass(); list.forEach(f
var list = [1,2,3];
var someClass = new SomeClass();
list.forEach(function(value) {
var result = someClass.getSomething(value);
console.log("outside: " + result);
});
function SomeClass() {
var flag = false;
this.getSomething = function(something) {
if (something === 3 && flag === false) {
flag = true;
this.getSomething(something);
//I need to return here, so the succeeding code is not read.
return;
}
console.log("inside: " + String(something));
return something;
}
}
日志
inside: 1
outside: 1
inside: 2
outside: 2
inside: 3
outside: undefined // I expect this value to be 3!!!
forEach循环不返回值。
您可以创建全局变量并为其赋值。forEach循环不返回值。 您可以创建全局变量并为其赋值。您有一个测试: 如果要返回
3
,则不要在return
语句后面加上任何内容<代码>返回表示返回未定义
。将返回3
或返回某物
不过,您可能希望从递归调用返回:
return this.getSomething(something);
您有一个测试:
如果要返回3
,则不要在return
语句后面加上任何内容<代码>返回表示返回未定义
。将返回3
或返回某物
不过,您可能希望从递归调用返回:
return this.getSomething(something);
问题是:
function SomeClass() {
var flag = false;
this.getSomething = function(something) {
if (something === 3 && flag === false) {
flag = true;
this.getSomething(something); // not returning this
return; // returning undefined
}
console.log("inside: " + String(something));
return something;
}
}
以下是修复方法:
function SomeClass() {
var flag = false;
this.getSomething = function(something) {
if (something === 3 && flag === false) {
flag = true;
return this.getSomething(something);
}
console.log("inside: " + String(something));
return something;
}
}
问题是:
function SomeClass() {
var flag = false;
this.getSomething = function(something) {
if (something === 3 && flag === false) {
flag = true;
this.getSomething(something); // not returning this
return; // returning undefined
}
console.log("inside: " + String(something));
return something;
}
}
以下是修复方法:
function SomeClass() {
var flag = false;
this.getSomething = function(something) {
if (something === 3 && flag === false) {
flag = true;
return this.getSomething(something);
}
console.log("inside: " + String(something));
return something;
}
}
将代码更改为
if(something==3&&flag==false)
{
}
“return;”返回未定义的将代码更改为
if(something==3&&flag==false)
{
}
“return;”返回未定义的它在代码中返回
未定义的
,因为您返回在if
子句中的code>
在if
子句中返回这个.getSomething(something)
var list = [1, 2, 3];
var someClass = new SomeClass();
list.forEach(function(value) {
var result = someClass.getSomething(value);
console.log("outside: " + result);
});
function SomeClass() {
var flag = false;
this.getSomething = function(something) {
if (something === 3 && flag === false) {
flag = true;
return this.getSomething(something);
}
console.log("inside: " + String(something));
return something;
}
}
它在您的代码中返回未定义的
,因为您返回在if
子句中的code>
在if
子句中返回这个.getSomething(something)
var list = [1, 2, 3];
var someClass = new SomeClass();
list.forEach(function(value) {
var result = someClass.getSomething(value);
console.log("outside: " + result);
});
function SomeClass() {
var flag = false;
this.getSomething = function(something) {
if (something === 3 && flag === false) {
flag = true;
return this.getSomething(something);
}
console.log("inside: " + String(something));
return something;
}
}
虽然这是事实,但实际上与问题无关。问题中的代码没有尝试从forEach
返回值。虽然这是真的,但实际上与问题无关。问题中的代码没有尝试从forEach
返回值。在他的代码中,他在函数本身'this.getSomething(something)'中调用了相同的函数。这是什么行为?我只是好奇。它就像递归的或无限的眼睛,它是递归的!在实际的代码中,我从amazon api获取内容,当它返回api错误时,我想在1000毫秒后再次运行同一个函数。在他的代码中,他在函数本身中调用了同一个函数“this.getSomething(something)”,这是什么行为?我只是好奇。它就像递归的或无限的眼睛,它是递归的!在实际代码中,我从AmazonAPI获取内容,当它返回api错误时,我希望在1000毫秒后再次运行相同的函数。是的!!这就是我想要的!!非常感谢你!!我需要再等几分钟才能接受你的回答。是的!!这就是我想要的!!非常感谢你!!我需要再等几分钟才能接受你的回答。