【问题标题】:JSLint and assigning values with ternary expressionsJSLint 和使用三元表达式赋值
【发布时间】:2019-09-03 04:02:00
【问题描述】:

这只是一个示例,但是对于使用三元表达式的以下赋值,我无法让它通过 JSLint test

我也不能让它忽略它。

var size = settings.size ? settings.size : defaults.size;

错误信息是 "用括号包裹一个三元表达式,在左括号后换行。"

我找不到的是一种使用括号的方法,并且作业仍然有效。

鉴于其中大约有 10 个,JSLint 并没有完成,而是进入我想要检查的真正重要的东西。

【问题讨论】:

  • 你也可以通过 var size = settings.size || defaults.size; 节省一些字节,虽然我不确定 JSLint 会对此说些什么。
  • 这实际上似乎消除了任何 JSLint 错误,尽管我认为有一些理由不做 x = A ||乙;但是我现在想不起来了。这有效地回答了这个问题。

标签: javascript ternary-operator jslint


【解决方案1】:

我也遇到了这个问题,发现这个帖子正在寻找答案,但经过一些试验和错误,我想我得到了它。

这是我用来安抚 JSLint 的语法(使用您的示例):

var size = (
  settings.size ? settings.size : defaults.size
);

这也有效:

var size = (
  settings.size ? settings.size : defaults.size);

请注意,这种特殊的三元逻辑也会导致 JSLint 抱怨其他内容:Expected '||' and instead saw '?',但上述语法确实解决了 OP 问题中提出的具体问题。

【讨论】:

  • 哇,太丑了!
  • @Bergi 是根据我的答案的早期版本发表评论的,该版本的近括号与三元组位于同一行。我也认为它很难看,所以我尝试在新行上使用封闭的括号以获得更对称的格式,它仍然可以安抚 JSLint 并在浏览器中工作。我仍然认为这种语法看起来很奇怪,但我只是用它来捕获任何 JS 错误,因为我认为 OP 也是如此。在投入生产之前,我可能会放弃这种语法。
  • 或者,抛弃带有奇怪规则的 jslint :-)
  • 哈哈,是的,当时的想法是 JSLint 可以在没有构建系统的情况下快速验证,但令我感到奇怪的是,我找不到任何关于这种三元格式预期的文档。我以前从未在其他 linter 上看到过这种情况,但我绝不是 Javascript 专家,所以我会听从对这个主题有更多了解的人。
  • @wcndave eslint 今天几乎是标准的,并且高度可配置。
猜你喜欢
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 2017-07-09
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 2022-08-03
  • 2013-04-21
相关资源
最近更新 更多