【问题标题】:transform into ES5 syntax Javascript转换成 ES5 语法 Javascript
【发布时间】:2020-10-28 16:21:35
【问题描述】:

我正在尝试弄清楚如何将此语法转换为 ES5 语法。

moveUp() {
    this.row > 0 ? this.row -= 1 : this.row = 0
  }

【问题讨论】:

  • 已经是ES5语法了。
  • 那我就看不懂了,怎么转换成更简单的语法
  • @Pointy - 实际上,ES5 没有方法语法。 (我不得不去检查。)
  • @T.J.Crowder 啊,您可能是对的,我将其视为普通(不正确)函数声明。 (在这里猜测上下文总是很困难。)

标签: javascript arrays javascript-objects ecmascript-5


【解决方案1】:

唯一不是 ES5 的部分是它是一个方法声明。我假设这是在一个对象文字中,像这样:

const obj = {
    moveUp() {
        this.row > 0 ? this.row -= 1 : this.row = 0;
    }
};

如果是这样,在 ES5 中几乎等效的是在属性初始化器中使用函数表达式:

const obj = {
    moveUp: function() {
        this.row > 0 ? this.row -= 1 : this.row = 0;
    }
};

旁注:我建议不要将条件运算符纯粹用于这样的副作用。这是一个 if/else 的事情,使用 if/else(在 ES5 或 ES2015+ 中):

const obj = {
    moveUp: function() {
        if (this.row > 0) {
            --this.row;
        } else {
            this.row = 0;
        }
    }
};

您是否需要else 也是值得怀疑的。大概没有任何东西会为this.row 分配一个负数,所以你可以这样做:

const obj = {
    moveUp: function() {
        if (this.row > 0) {
            --this.row;
        }
    }
};

【讨论】:

    【解决方案2】:

    如果您正在寻找“更简单的语法”,请将 this.row = 0 添加到 if 语句的 else 部分

    moveUp(){
      if (this.row > 0){
        this.row -= 1
      } else {
        this.row = 0
      }
    }
    

    您可以在此处了解有关 if 语句的更多信息 https://www.w3schools.com/js/js_if_else.asp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多