if语句无法定义变量,除非使用简写(javascript)

时间:2018-05-24 18:37:56

标签: javascript reactjs if-statement

我试图定义一个变量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 :(得分:0)

区别在于范围界定。 var的范围限定为最近的功能块,并且将范围限定为最近的封闭块,该封闭块可以小于功能块。如果在任何区块之外,两者都是全球性的。

此外,使用let声明的变量在它们的封闭块中声明之前是不可访问的。如演示中所示,这将引发ReferenceError异常

尝试更改变量定义方法

let x

const x