返回在Javascript中未定义
我需要编写一个程序来遍历Javascript中的迷宫,其中1是源,2是目标,3是路径,0是墙。下面是我写的代码。代码是正确的,但我只在使用console.log()时得到答案,而不是在返回字符串yes或no时得到答案。为什么会这样返回在Javascript中未定义,javascript,Javascript,我需要编写一个程序来遍历Javascript中的迷宫,其中1是源,2是目标,3是路径,0是墙。下面是我写的代码。代码是正确的,但我只在使用console.log()时得到答案,而不是在返回字符串yes或no时得到答案。为什么会这样 function sourceDes(arr) { for (var i=0;i<arr.length;i++) { for (var j=0;j<arr[i].length; j++) { if (arr[i][j] == 1)
function sourceDes(arr) {
for (var i=0;i<arr.length;i++) {
for (var j=0;j<arr[i].length; j++) {
if (arr[i][j] == 1) {
traverse(i,j);
break;
}
}
}
function traverse(rowPos, colPos) {
if (arr[rowPos][colPos] == 2) {
console.log("yes");
// return "Yes";
}
else if (arr[rowPos][colPos] == 3 || arr[rowPos][colPos] == 1) {
arr[rowPos][colPos] = 9;
if(rowPos < arr.length - 1) {
return traverse(rowPos + 1, colPos);
}
if(colPos < arr[rowPos].length - 1) {
return traverse(rowPos, colPos + 1);
}
if(rowPos > 0) {
return traverse(rowPos - 1, colPos);
}
if(colPos > 0) {
return traverse(rowPos, colPos - 1);
}
}
else if (arr[rowPos][colPos] == 0) {
console.log("No");
// return "No";
}
}
}
当console.log()时输出
返回值并对函数应用console.log时的输出
undefined
sourceDes
函数中缺少return语句两个函数中都应该有return语句,否则在Javascript中返回undefined语句,如果省略函数中的return语句,则假定为隐式的return undefined
。这就是为什么会得到这个返回值 我检查了您的代码,发现sourceDes函数中有一个bug。您没有在函数中定义return语句
function sourceDes(arr) {
for (var i=0;i<arr.length;i++) {
for (var j=0;j<arr[i].length; j++) {
if (arr[i][j] == 1) {
traverse(i,j);
break;
}
}
}
function sourceDes(arr) {
var result='';
for (var i=0;i<arr.length;i++) {
for (var j=0;j<arr[i].length; j++) {
if (arr[i][j] == 1) {
result= traverse(i,j);
break;
}
}
return result;
}
function traverse(rowPos, colPos) {
if (arr[rowPos][colPos] == 2) {
//console.log("yes");
return "Yes";
}
else if (arr[rowPos][colPos] == 3 || arr[rowPos][colPos] == 1) {
arr[rowPos][colPos] = 9;
if(rowPos < arr.length - 1) {
return traverse(rowPos + 1, colPos);
}
if(colPos < arr[rowPos].length - 1) {
return traverse(rowPos, colPos + 1);
}
if(rowPos > 0) {
return traverse(rowPos - 1, colPos);
}
if(colPos > 0) {
return traverse(rowPos, colPos - 1);
}
}
else if (arr[rowPos][colPos] == 0) {
//console.log("No");
return "No";
}
}
}
函数源DES(arr){
对于(var i=0;i使用以下代码段。我在循环中添加了变量并设置了值,并在函数末尾返回了结果变量
function sourceDes(arr) {
for (var i=0;i<arr.length;i++) {
for (var j=0;j<arr[i].length; j++) {
if (arr[i][j] == 1) {
traverse(i,j);
break;
}
}
}
function sourceDes(arr) {
var result='';
for (var i=0;i<arr.length;i++) {
for (var j=0;j<arr[i].length; j++) {
if (arr[i][j] == 1) {
result= traverse(i,j);
break;
}
}
return result;
}
function traverse(rowPos, colPos) {
if (arr[rowPos][colPos] == 2) {
//console.log("yes");
return "Yes";
}
else if (arr[rowPos][colPos] == 3 || arr[rowPos][colPos] == 1) {
arr[rowPos][colPos] = 9;
if(rowPos < arr.length - 1) {
return traverse(rowPos + 1, colPos);
}
if(colPos < arr[rowPos].length - 1) {
return traverse(rowPos, colPos + 1);
}
if(rowPos > 0) {
return traverse(rowPos - 1, colPos);
}
if(colPos > 0) {
return traverse(rowPos, colPos - 1);
}
}
else if (arr[rowPos][colPos] == 0) {
//console.log("No");
return "No";
}
}
}
函数源DES(arr){
var结果=“”;
对于(变量i=0;i 0){
返回导线(rowPos、colPos-1);
}
}
否则如果(arr[rowPos][colPos]==0){
//控制台日志(“否”);
返回“否”;
}
}
}
您将console.log包装在哪个函数中?是否尝试使用return?取消对代码中注释的行的注释,然后对console.log行进行注释?是否应在sourceDes函数中返回遍历函数?