не определено при тестировании функции

1

поэтому я работал над функциями, создающими звездные шаблоны, и как-то я продолжаю получать "undefined", когда я'innerHTML 'это. Может ли кто-нибудь помочь мне увидеть, что я делаю неправильно здесь?

pOutput.innerHTML = square(3);
poutput.innerHTML = rectangle(2,3);

function square(x) {
var z;
for (var i = 1; i<=x; i++) {
    for ( var j = 1; j<=x; j++) {
        z += "*";
    }
    z += "<br>";
}  
return z
}

function rectangle(x, y) {
var z;
for (var i = 1; i<=x; i++) {
    for ( var j = 1; j<=y; j++) {
        z += "*";
    }
    z += "<br>";
}  
return z  
}
  • 0
    var z; <--- не определено ....
  • 0
    Sidenote, для лучшей практики вы должны добавить точки с запятой ; к вашему возвращению. Также не называйте переменные, которые отличаются только регистром (poutput против pOutput). В любом случае poutput не очень описательное имя. Ваша первая функция также может быть сокращена до 1 строки: return rectangle(x, x); :-)
Теги:

3 ответа

2
Лучший ответ

Вы должны сделать var z = "" иначе значение не определено, см. Это:

var z;

console.log(z)

Полный пример:

console.log(square(3));
console.log(rectangle(2,3));

function square(x) {
var z = "";
for (var i = 1; i<=x; i++) {
    for ( var j = 1; j<=x; j++) {
        z += "*";
    }
    z += "<br>";
}  
return z
}

function rectangle(x, y) {
var z = "";
for (var i = 1; i<=x; i++) {
    for ( var j = 1; j<=y; j++) {
        z += "*";
    }
    z += "<br>";
}  
return z  
}
1

Инициализировать z с "" значением по умолчанию z не undefined в var z;

var pOutput = document.getElementById('pOutput')
var poutput = document.getElementById('poutput')
pOutput.innerHTML = square(3);
poutput.innerHTML = rectangle(2,3);

function square(x) {
var z = "";
for (var i = 1; i<=x; i++) {
    for ( var j = 1; j<=x; j++) {
        z += "*";
    }
    z += "<br>";
}  
return z
}

function rectangle(x, y) {
var z = "";
for (var i = 1; i<=x; i++) {
    for ( var j = 1; j<=y; j++) {
        z += "*";
    }
    z += "<br>";
}  
return z  
}
1

Посмотрите на следующий фрагмент, где я исправил ваш код. Вам нужно инициализировать z пустой строкой.

var z = "";

Если это не определено, то следующее пошло не так

z += "*" -> z is undefined so z = "undefined" + "*"

document.getElementById("square").innerHTML = square(3);
document.getElementById("rectangle").innerHTML = rectangle(2, 3);

function square(x) {
  var z = "";
  for (var i = 1; i <= x; i++) {
    for (var j = 1; j <= x; j++) {
      z += "*";
    }
    z += "<br/>";
  }
  return z
}

function rectangle(x, y) {
  var z = "";
  for (var i = 1; i <= x; i++) {
    for (var j = 1; j <= y; j++) {
      z += "*";
    }
    z += "<br/>";
  }
  return z
}
Square
<div id="square"></div>

<br/><br/> Rectangle
<div id="rectangle"></div>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню