2017-11-29 1 views
2

Es gibt „undefiniert“ erscheint am Ende der zweiten Funktion, i nicht den Grund herausfinden kann. hier ist mein Code„undefiniert“ kehrte am Ende der Funktion

function makeLine(length) { 
    var line = ""; 
    for (var j = 1; j <= length; j++) { 
     line += "* "; 
    } 
    return line + "\n"; 
} 

// your code goes here. Make sure you call makeLine() in your own code. 
function buildTriangle(len){ 
    for(var i=1;i<=len; i++){ 
     console.log(makeLine(i)); 
    } 
} 

// test your code by uncommenting the following line 
console.log(buildTriangle(10)); 
+2

Das liegt daran, dass dies der Rückgabewert ist. –

+0

@ kevinSpaceyIsKeyserSöze wie kann ich dieses Problem beheben? –

+0

geben Sie einen anderen Wert von dieser Funktion zurück –

Antwort

7

Wenn Sie nicht explizit einen Wert aus einer Funktion zurückgeben kann, es undefined implizit zurückgibt.


Sie melden den Rückgabewert von buildTriangle, die undefined ist:

console.log(buildTriangle(10)); 

See MDN for more info.

1

Timo beantwortet die warum. Hier ist ein Weg, um den Code zu beheben, so dass Sie das Ergebnis zurück.

ein Array definieren und mit jeder Iteration der Schleife das Ergebnis makeLine an das Array schieben. Dann gebe das verbundene Array zurück.

function buildTriangle(len){ 
    var arr = []; 
    for (var i=1;i<=len; i++){ 
    arr.push(makeLine(i)) 
    } 
    return arr.join(''); 
} 

DEMO

0

Entfernen Konsole letzten Zeile .Es ist keine Notwendigkeit der Konsole werden Sie jede Funktion aufrufen.

function makeLine(length) { 
    var line = ""; 
    for (var j = 1; j <= length; j++) { 
     line += "* "; 
    } 
    return line + "\n"; 
} 

// your code goes here. Make sure you call makeLine() in your own code. 
function buildTriangle(len){ 
    for(var i=1;i<=len; i++){ 
     console.log(makeLine(i)); 
    } 
} 

// test your code by uncommenting the following line 
buildTriangle(10) 

Wenn Sie die Funktion in console.log aufrufen möchten. Dann etwas von buildTriangle Funktion zurückgeben.