Если инструкция не может определить переменную, если не используется сокращение (javascript) - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь определить переменную x, которая будет служить для проверки местоположения вдоль оси x движущейся точки на круглом дисплее и повторного ее построения, если она находится за пределами допустимого радиуса.Это работало, когда указывалось только в одном направлении, используя только строку:

let x = ((this.state.centerx[point] + frame * this.props.jump) < (0.5 * this.props.width - 0.15 * this.props.width)) ?
(this.state.centerx[point] + frame * this.props.jump) + (0.3 * this.props.width) : this.state.centerx[point] + frame * this.props.jump

, однако, когда я попытался добавить еще одну проверку в виде оператора if, я получил бы ошибку:

63:20  error    'x' is not defined

Вот весь код, который я пытаюсь использовать:

for(var frame = 0; frame < this.props.numframes; frame++) {
    var startpoint = (frame % 2 === 0) ? 0 : this.props.numpoints
    for(var point = startpoint; point < startpoint + this.props.numpoints; point++) {
        if(this.state.direction > 0) {
            let x = ((this.state.centerx[point] + frame * this.props.jump) < (0.5 * this.props.width - 0.15 * this.props.width)) ? (this.state.centerx[point] + frame * this.props.jump) + (0.3 * this.props.width) : (this.state.centerx[point] + frame * this.props.jump)
        } else {
            let x = ((this.state.centerx[point] + frame * this.props.jump) > (0.5 * this.props.width + 0.15 * this.props.width)) ? (this.state.centerx[point] + frame * this.props.jump) - (0.3 * this.props.width) : (this.state.centerx[point] + frame * this.props.jump)
    }

Спасибо за любые идеи, которые вы можете предоставить.

1 Ответ

0 голосов
/ 24 мая 2018

Разница в объеме.var ограничен до ближайшего функционального блока, а let - до ближайшего окружающего блока, который может быть меньше функционального блока.Оба являются глобальными, если находятся вне какого-либо блока.

Кроме того, переменные, объявленные с помощью let, недоступны до тех пор, пока они не объявлены в включающем их блоке.Как видно из демонстрации, это вызовет исключение ReferenceError

Попробуйте изменить метод определения переменной

let x

на

const x
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...