意外的标记 ;定义布尔变量时

Unexpected token ; when defining Boolean variable

我正在设置一个可以检查价格的 TF2 交易机器人。我在定义一个布尔值是否以钥匙定价时出现错误。

我试过用 data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()][0].currency == [=20 替换 isKeys =] 在 if 语句中,但在 if 语句中出现右括号错误。

var data = {

};
var currencies = {

};
requestify.get('https://backpack.tf/api/IGetPrices/v4?raw=1&since=0&key=5cf17c256780725011449df2')
    .then(function(response) {

    data = response.getBody().response.items;
    console.log(data["Australium Tomislav"].prices["11"].Tradable.Craftable);
  }
);
requestify.get('https://backpack.tf/api/IGetCurrencies/v1?key=5cf17c256780725011449df2')
  .then(function(response) {

      currencies = response.getBody().response.currencies;
  }
);

function toRef(keys, high) {
    if (high) {
        if (currencies.keys.price.value_high != undefined){
        return currencies.keys.price.value_high * keys
        } else {
            return currencies.keys.price.value * keys
        }
    } else {
        return currencies.keys.price.value * keys
    }
}
function getPrice(item, high) {
    var name = item.market_name;
    var quality = item.tags[0].name;
    var baseName = name.replace(quality + " ", "");
    var qualityId = itemQualities[quality];
    var isCraftable = true;
    var isKeys = data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()][0].currency == "keys"; // Error here
    for (i = 0;i < item.description.length;i++) {
        if (item.description[i].value == '( Not Usable in Crafting )') {
            isCraftable = false;
        }
    }

    if (high) {
        if (isKeys) {
            return toRef(data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value_high], true);
        } else {
            return data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value_high];
        }
    } else {
        if (isKeys) {   
            return toRef(data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value], false);
        } else {
            return data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value];
        }
    }

}

`

G:\BOT\bot.js:106 var isKeys = data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()][0].currency == "keys"; ^

SyntaxError: Unexpected token ;

是我得到的错误

Tradable 缺少方括号

var isKeys = data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()]][0].currency == "keys";

该行缺少 square-bracket-close (])。

您的线路是:

var isKeys = data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()][0].currency == "keys"; // Error here

您在 .Tradable[ 处打开了一个括号,但直到该行末尾才关闭。 编译器期望 ] 但找到了 ;

我不熟悉您正在使用的 API,但我想以下内容可以修复错误:

var isKeys = data[baseName].prices[qualityId.toString()].Tradable[craftable[isCraftable.toString()][0].currency == "keys"]; // << Notice the bracket before your semicolon

TL;DR:您在错误的行中缺少 ]。你在下面的 if(high){...} 行有额外的 ]

您在该行中缺少一个方括号 ]var isKeys = ... 正如其他答案所暗示的那样。 现在,我们不知道数据结构,所以可以,

data[baseName]
    .prices[qualityId.toString()]
    .Tradable[craftable[isCraftable.toString()][0].currency*]*

data[baseName]
    .prices[qualityId.toString()]
    .Tradable[craftable[isCraftable.toString()][0]*]*.currency

而且,

您的行上有多余的方括号,

if (high) {
        if (isKeys) {
        /*--here>>*/return toRef(data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value_high, true);
        } else {
        /*--here>>*/return data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value_high;
        }
    } else {
        if (isKeys) {
        /*--here>>*/ return toRef(data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value, false);
        } else {
        /*--here>>*/return data[baseName].prices[qualityId.toString()].Tradable[isCraftable.toString()][0].value;
        }
    }

同样,我们不知道确切的数据结构。