Javascript qx.log.appender语法

Javascript qx.log.appender语法,javascript,frameworks,qooxdoo,Javascript,Frameworks,Qooxdoo,声明qx.log.appender.Native或qx.log.appender.Console时,my IDE(PyCharm)会抱怨语法: // Enable logging in debug variant if (qx.core.Environment.get("qx.debug")) { qx.log.appender.Native; qx.log.appender.Console; } (as) 我得到的警告是 表达式语句不是赋值或调用 这是预处理器的魔力还是Jav

声明qx.log.appender.Native或qx.log.appender.Console时,my IDE(PyCharm)会抱怨语法:

// Enable logging in debug variant
if (qx.core.Environment.get("qx.debug"))
{
    qx.log.appender.Native;
    qx.log.appender.Console;
}
(as)

我得到的警告是

表达式语句不是赋值或调用

这是预处理器的魔力还是JavaScript语法的一个特性,我还不知道

由于我的问题模棱两可,澄清如下:

我知道这是非常好的JavaScript语法。从评论中我得出结论,这里没有导致日志附加器被附加的神奇JS行为,而是一些预处理器特性

但是这是如何工作的呢?它是一个硬编码处理,还是这种语法适用于所有遵循特定约定的类


如何关闭linter警告的提示很有用,但我更想知道这个“魔法”是如何工作的这是一个有效的JS语法,所以很可能是linter/预处理器的警告(看起来类似于ESLint)


编辑: 对于问题的另一部分,此语法很可能使用or(因为这是一个新特性,所以不太可能)。MDN提供了如何在引擎盖下工作的简单示例


顺便说一句:没有“原生”JS预处理器。有一些编译器,比如
Babel
TypeScript的编译器
,但它们是独立的项目,与普通的JavaScript无关。

虽然默认情况下是法律代码,但我发现它有点难看,因为它是一个“无用的声明”(结果被忽略),除了我的编辑也抱怨这件事之外。在我的代码中,我总是将其更改为以下内容:

var appender;

appender = qx.log.appender.Native;
appender = qx.log.appender.Console;

Derrell

生成器读取您的代码以确定应用程序所需的类,这样它就可以生成一个只包含最小类的优化应用程序

这两行代码是有效的Javascript语法,它们的存在是为了创建对这两个类的引用,以便生成器知道是否包含它们——如果没有它们,应用程序中就不会有任何日志记录

创建引用的另一种方法是在类注释中使用
@use
编译器提示,例如:

/**
 * @use(qx.log.appender.Native)
 * @use(qx.log.appender.Console)
 */
qx.Class.define("mypackage.Application", {
  extend: qx.application.Standalone,

  members: {
    main: function() {
      this.base(arguments);

      this.debug("Hello world");
    }
  }
});
这同样有效,并且没有不寻常的语法-然而,在这个版本中,你的应用程序将始终引用那些日志附加器,而在框架中,你使用对
qx.log.appender.Native/Console
的引用被
if(qx.core.Environment.get(“qx.debug”){…}
这意味着在应用程序的非调试版本中,
/generate.py build
通常会排除日志附加程序

你是否认为这是一件好事取决于你自己——就个人而言,这些天来,我发布的所有应用程序都启用了日志附加器,并且可以正常工作,这样,如果有人有问题,我可以查看日志(你可以编写自己的附加器,将日志发送到服务器,或者只是远程控制用户的计算机)


编辑:另一个细节是,创建类时,它可以有一个执行额外初始化的
延迟
函数-在这种情况下,生成器检测到需要
qx.log.appender.Console
,以确保类已加载;然后,类“
defer
方法将自身作为附加程序添加到Qooxdoo日志系统中

对于JetBrains IDE(IntelliJ、PhpStorm、WebStorm、PyCharm),所谓的“检查”可以在本地关闭://noinspection BadExpressionStatementJS qx.log.appender.Native;我已编辑了对您编辑的问题的回答。下次,最好问另一个问题,而不是编辑已经回答的问题。谢谢,这是一个很好的解决方法(尽管我发现了如何在IDE中禁用警告,请参阅我对@mdziekon评论的回复)。现在我需要知道这种“魔法”在幕后是如何运作的。请参阅我原始问题的更新。