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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JavaScript中使用/定义函数时出错相关的知识,希望对你有一定的参考价值。

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


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

而不是提取整个消息,我想提取TransactionNum的变量值,然后将其显示在html中(因此,不仅在烤面包中)。

所以这是我写的用于提取消息对象中一个值的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

但是这些都是这个问题的主题。

另一答案

似乎您正在使用包装在类中的代码。

在这种情况下,您与此对象有关。因此,如果您不使用“ this”,它将仅在函数上下文中搜索,从而给您带来错误。

以上是关于在JavaScript中使用/定义函数时出错的主要内容,如果未能解决你的问题,请参考以下文章

通过JavaScript执行机制去学习闭包,执行上下文,作用域,作用域链。

在 SQL 用户定义函数中使用公用表表达式时出错

js写在head与写在body有什么区别

通过JavaScript执行机制去学习闭包,执行上下文,作用域,作用域链。

Javascript中..为啥IE执行addEventListener()会出错??

尝试通过数据框在 Pyspark 中执行用户定义的函数时出错