когда вызываю row оно вдает "Input rown undefined"
let game = {
pleyer: "x",
board: board = [
["_", "_", "_"],
["_", "_", "_"],
["_", "_", "_"]
],
boardStr: alert(this.board[0].join(" ") + "\n" + this.board[1].join(" ") + "\n" + this.board[2].join(" ")),
winningCombinations: [
[
[0, 0],
[0, 1],
[0, 2]
],
[
[2, 0],
[2, 1],
[2, 2]
],
[
[1, 0],
[1, 1],
[1, 2]
],
[
[0, 0],
[1, 1],
[2, 2]
],
[
[0, 2],
[1, 1],
[2, 0]
],
[
[0, 0],
[1, 0],
[2, 0]
],
[
[0, 2],
[1, 2],
[2, 2]
],
[
[0, 1],
[1, 1],
[2, 1]
]
],
row: +prompt("Input rown \n\n" + this.boardStr),
colum: +prompt("Input column \n\n" + this.boardStr)
}
while (true) {
game.boardStr();
let row = game.row();
let column = game.colum();
if (board[row][column] !== "_") {
alert("Wrong step. Try another one.");
}
}
В приведенном коде несколько недочетов:
неявное объявление переменной board
:
board: board = [
здесь, перед инициализацией поля board
создается глобальная переменная с тем же именем, которой так же присваивается массив.
Попытка присвоить свойству результат выполнения функции alert
boardStr: alert(this.board[0].join(" ")
так как alert
ничего не возвращает, значением поля становится undefined
.
Попытка обратиться к объекту до его создания:
boardStr: alert(this.board[0].join(" ")
внутри литерала объекта, нельзя сослаться на сам объект с помощью this
, в данном случае this
будет глобальным объектом. И, так как, в первом пункте указано, что создалась глобальная переменная board
, здесь идет к ней обращение.
Нет определенности чем должно быть поле boardStr
. Исходя из названия, это должна быть строка, исходя и способов применения
"Input rown \n\n" + this.boardStr
это все еще строка, или
game.boardStr();
функция
Аналогично 4 пункту, но для свойств row
, col
: данные поля используются и как функции и как числа/строки
Для исправления первых двух пунктов, достаточно убрать лишнее и
board: [
и использовать функцию, которая вернет строку с текущим состоянием:
boardStr: function() { return (this.board[0].join(" ") + "\n" + this.board[1].join(" ") + "\n" + this.board[2].join(" "))},
Для решения остальных недочетов, необходимо определиться, с тем, как будут использоваться указанные поля и исходя из этого исправить код.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть задание связанное с mipmapsПо сути задание такого - есть 3Д фигура (допустим сфера) и при приближении камеры к фигуре начинает проявляться...
Стоит вопрос таков, как отправить данные из первой формы во вторую, во второй форме получить еще данные и отправить на третью страницу и все...
Необходимо написать рекурсивную функцию, которая будет выводить ряд Фибоначчи в консольНе понимаю, как это сделать
Нужно из двумерного массива [1, 2, [3, 4]] сделать одномерный var arr1 = [1, 2,3, 4];