javascript - 在 JavaScript 中使用/定义函数时出错

标签 javascript

我编写了一个 JS 函数来解析 JSON 响应并将其显示为 toast 消息。一切正常。我现在正在添加一个附加功能。 JSON 响应采用以下格式:

{
  "type": "message",
  "message": "Payment Approved with Order Number: &&Secure.OrderNum&& and Transaction ID: &&Secure.TransactionNum&&"
}

我不想获取整条消息,而是想提取 TransactionNum 的变量值并将其显示在 HTML 中(因此不仅仅是在 toast 中)。

所以这是我写的用于提取消息对象中的一个值的 JS:

_onDataEvent(jsonData) {
  let eventData = JSON.parse(jsonData);

  // Is this a message?
  if (eventData.type === "message") {
    // Yes, show the status
    let message = eventData.message;
    const evt = new ShowToastEvent({
      title: "Payment Status",
      message: message,
      variant: 'info'
    });
    dispatchEvent(evt);
  }

  // Is this a result?
  else if (eventData.type === 'result') {
    // Yes, show the result
    let success = eventData.success;
    let message = eventData.message;

    const evt = new ShowToastEvent({
      title: "Payment Result",
      message: message,
      variant: success ? 'success' : "error",
      url: "www.five9.com"
    });
    transaction(message); //I added this and VS code keeps on putting a red squiggly line on it.
    dispatchEvent(evt);
  }
}

transaction(message) {
  var words = message.split(" ");
  var transactionId = words[-1];
  return transactionId;
}

现在,我在调用该方法时遇到错误。它说

transaction is not defined

当我将 function 关键字添加到方法时,我在方法调用中没有看到红色波浪线,但我收到另一个错误提示

Unexpected token: A constructor, expression, accessor or property was expected

我不知道如何解决这个问题。我做错了什么吗 方法?方法写对了吗?我需要添加什么或 改变顺序?

最佳答案

您的代码可能位于对象字面量或类声明中。

  • 如果省略 function 关键字,则在对象上定义一个方法(不是全局作用域函数)。
  • 您不能在那里使用 function 关键字,因为这是不允许的。

要解决它,将函数声明放在 _onDataEvent 方法中,以在本地创建它:

_onDataEvent(jsonData) {

  function transaction(message) {
    var words = message.split(" ");
    var transactionId = words[-1];
    return transactionId;
  }

  let eventData = JSON.parse(jsonData);

  // Is this a message?
  if (eventData.type === "message") {
    // Yes, show the status
    let message = eventData.message;
    const evt = new ShowToastEvent({
      title: "Payment Status",
      message: message,
      variant: 'info'
    });
    dispatchEvent(evt);
  }

  // Is this a result?
  else if (eventData.type === 'result') {
    // Yes, show the result
    let success = eventData.success;
    let message = eventData.message;

    const evt = new ShowToastEvent({
      title: "Payment Result",
      message: message,
      variant: success ? 'success' : "error",
      url: "www.five9.com"
    });
    transaction(message);
    dispatchEvent(evt);
  }
}

此外,transaction 函数在其当前形式中没有任何用处:

  • 它不会改变任何东西
  • 它返回一个值,但调用者忽略它
  • 您不能使用负数从后向访问数组索引,它将访问 "-1" 属性(通常为 undefined)

但这些都离题了。

关于javascript - 在 JavaScript 中使用/定义函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58845377/

相关文章:

javascript - C3.js 折线图 - 轴标签问题

javascript - onBeforeUnload 突然无法按预期工作

javascript - ESLint - 显示尝试 Lint 但 Lint 文件的问题

javascript - 第二个函数在第一个函数完成之前启动,Javascript

javascript - Angular 广播在第二次调用时未更新

javascript - 如何在 React JS 中使用 Google 字体

javascript - 语法错误: Unexpected token p in JSON at position 0 In fetch

javascript - PowerBi 使用 JavaScript 嵌入仪表板

javascript - 在选择中使用 ngPluralize

javascript - Javascript 中的 Flash/blink 选项卡效果