意外令牌,预期:

Unexpected token, expected :

我想使用三元运算符,但收到以下错误消息:

" 意外令牌,预期:"

这是为什么?

这是我的第一个代码:

const GetUp = (num) => {
  for (let i = 1; i <= num; i++) {
    if (i % 3 === 0) {
      console.log('Get')
    }
    if (i % 5 === 0) {
      console.log('Up')
    }
    if (i % 3 === 0 && i % 5 === 0) {
      console.log('GetUp')
    } else {
      console.log(i)
    }
  }
}
GetUp(200)

这是我最近的代码:

const SetRuc = (num) => {
  for (let i = 1; i <= num; i++) { 
    (i % 3 === 0) ? console.log('Set')
    (i % 5 === 0) ? console.log('Ruc')
    (i % 3 === 0 && i % 5 === 0) ? console.log('SetRuc') : console.log(i)
  }
}

SetRuc(100)

例如:

(i % 3 === 0) ? console.log('Set')

没有为 ? 提供 : 选项。如果您不希望在 ? 检查为假的情况下发生任何事情,您可以简单地提供一个空对象,或者 undefined:

(i % 3 === 0) ? console.log('Set') : {}

如果没有 else

,则使用 && 作为短手

添加分号; 让它知道这是指令的结尾,否则它会将三行作为一条指令进行评估。

const SetRuc = (num) => {
  for (let i = 1; i <= num; i++) { 
    (i % 3 === 0) && console.log('Set');
    (i % 5 === 0) && console.log('Ruc');
    (i % 3 === 0 && i % 5 === 0) ? console.log('SetRuc') : console.log(i);
  }
}

SetRuc(100)

你误用了三元运算符,语法是:

condition ? expr1 : expr1

假设如果条件为真expr1就会执行,否则expr2就会执行。

所以你可能需要这个:

const SetRuc = (num) => {
  for (let i = 1; i <= num; i++) { 
    (i % 3 === 0) ? console.log('Set') :
    (i % 5 === 0) ? console.log('Ruc') :
    (i % 3 === 0 && i % 5 === 0) ? console.log('SetRuc') : console.log(i)
  }
}

SetRuc(100)
const SetRuc = (num) => {
  for (let i = 1; i <= num; i++) { 
    (i % 3 === 0) ? console.log('Set') :
    (i % 5 === 0) ? console.log('Ruc') :
    (i % 3 === 0 && i % 5 === 0) ? console.log('SetRuc') : console.log(i)
  }
}

SetRuc(100)

您在 console.log('Set')console.log('Ruc')

之后错过了 :

如果您不想在三元运算符中出现错误结果时执行任何操作。你可以只说 statement ? 'expression' : null

只需在其中提及 null。像

const SetRuc = (num) => {
  for (let i = 1; i <= num; i++) { 
    (i % 3 === 0) ? console.log('Set') : null;
    (i % 5 === 0) ? console.log('Ruc') : null;
    (i % 3 === 0 && i % 5 === 0) ? console.log('SetRuc') : console.log(i);
  }
}

SetRuc(100)