【问题标题】:I cannot find small mistakes: Invalid shorthand property initializer and more我找不到小错误:Invalid shorthand property initializer 等
【发布时间】:2021-01-02 10:30:27
【问题描述】:

我找不到我犯的一些错误,无论是标点符号还是逻辑错误。 当我必须将流动站坐标推送并将新位置更新到我的流动站对象时,就会出现错误。

这是指南和代码:我们想知道我们的漫游车到目前为止的位置。在流动站对象上创建一个属性,其中包含其所在位置的坐标。该属性将是一个数组,您可以将其称为 travelLog。

每次移动后,将上一个流动站所在位置的坐标推送到 travelLog 数组。漫游者完成移动后,打印出漫游者经过的所有地方。(最后一部分我仍然需要编写代码)

let myRover = {
    direction: 'N',
    x: 0,
    y: 0,
    travelLog = [{
        x: 0,
        y: 0
    }]
}

// ======================

function turnLeft(rover) {

    console.log('turnLeft was called!');

    switch (rover.direction) {

        case 'N':
            rover.direction = 'W';
            break;

        case 'W':
            rover.direction = 'S';
            break;

        case 'S':
            rover.direction = 'E';
            break;

        case 'E':
            rover.direction = 'N';
            break;
    }
}

function turnRight(rover) {

    console.log('turnRight was called!');

    switch (rover.direction) {
        case 'N':
            rover.direction = 'E';
            break;

        case 'W':
            rover.direction = 'N';
            break;

        case 'S':
            rover.direction = 'W';
            break;

        case 'E':
            rover.direction = 'S';
            break;
    }
}

function moveForward(rover) {
    console.log('moveForward was called');

    switch (rover.direction) {

        case 'N':
            rover.x++;
            break;

        case 'W':
            rover.y--;
            break;

        case 'S':
            rover.x--;
            break;

        case 'E':
            rover.y++;
            break;

    }

    console.log(`The rover has position: x= ${rover.x} ,  y= ${rover.y};`)

    let newPosition = x: $ {
            rover.x
        },
        y: $ {
            rover.y
        };
    rover.travelLog.push(newPosition);
}

function command(rover, orders) {
    for (let i = 0; i < orders.length; i++) {
        let order = orders[i];

        switch (order) {

            case 'f':
                moveForward(rover, order);
                break;

            case 'r':
                turnRight(rover, order);
                break;

            case 'l':
                turnLeft(rover, order);
                break;
        }
    }

} 

我得到的主要错误是“无效的速记属性初始化”

【问题讨论】:

  • 哪一行给出了错误?
  • travelLog = [{ --> travelLog: [{

标签: javascript arrays function object


【解决方案1】:
let myRover = {
    direction: 'N',
    x: 0,
    y: 0,
    travelLog = [{
        x: 0,
        y: 0
    }]

应该是

let myRover = {
    direction: 'N',
    x: 0,
    y: 0,
    travelLog: [{ //not = but :
        x: 0,
        y: 0
    }]

【讨论】:

    【解决方案2】:

    你也有问题:

        let newPosition = x: $ {
                rover.x
            },
            y: $ {
                rover.y
            };
    

    认为你只是想创建一个新对象:

        let newPosition = {
            x: rover.x,
            y: rover.y,
        };
    

    我强烈建议您阅读有关“对象文字表示法”和“字符串模板文字”的更多信息。您似乎以一种混淆编译器的方式混合了这两种语法。

    【讨论】:

      猜你喜欢
      • 2020-12-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 2021-11-30
      • 1970-01-01
      • 2022-06-28
      • 2021-10-03
      相关资源
      最近更新 更多