#javascript #conditional-operator
Вопрос:
Я создаю Row
класс для игры в блок, которую я создаю. В настоящее время у меня есть этот код для класса:
function Row(size, rowNum, state) {
this.size = size;
this.rowNum = rowNum;
this.cells = state ? this.fromState(state) : this.empty();
}
Row.prototype.empty = function () {
var cells = [];
for (var x = 0; x < this.size; x ) {
cells.push(null);
}
return cells;
};
Row.prototype.fromState = function (state) {
var cells = [];
for (var x = 0; x < this.size; x ) {
var tile = state[this.rowNum][x];
cells.push(tile ? new Tile(tile.position, tile.value) : null);
}
return cells;
};
Я получил ошибку «позиция не определена» в tile.js. Я обнаружил, что это произошло потому, что переменная tile
была нулевой (и поэтому tile.position
не была определена). Но потом я понял, что у меня уже был троичный оператор, который, предположительно, уже знает, что tile
это ноль, а затем нажимает null
вместо нажатия new Tile(tile.position, tile.value)
. Похоже, что тернарный оператор работает не так, как ожидалось.
Почему это происходит и как это исправить?
Редактировать: Для ясности: это мой конструктор для Tile
:
function Tile(position, value) {
this.x = position.x; // This is the line where I am getting the error
this.y = position.y;
this.value = value;
this.previousPosition = null;
this.mergedFrom = null;
}
И фактическая ошибка:
Ошибка типа: позиция не определена
Комментарии:
1. Вы получаете сообщение об ошибке «позиция не определена» или вы получаете сообщение «Не удается прочитать свойство «позиция » неопределенного».
2. Я получаю первое.
3. @SebastianSimon Пожалуйста, проверьте новые правки. Кроме того, да, я пытался войти
tile
в систему .4. Если
tile.position
undefined
да , тоTile
конструктор не может прочитатьx
y
его свойства и. Это не связано с вашейtile
регистрацией в условном. Вместо этого вам нужно будет проверитьtile.position
. Попробуйтеtile?.position amp;amp; tile?.value
, как ваше условие.