JSLint 和使用三元表达式赋值
Posted
技术标签:
【中文标题】JSLint 和使用三元表达式赋值【英文标题】:JSLint and assigning values with ternary expressions 【发布时间】: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 ||乙;但是我现在想不起来了。这有效地回答了这个问题。
【参考方案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 今天几乎是标准的,并且高度可配置。以上是关于JSLint 和使用三元表达式赋值的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 三元运算符中给出错误:只有赋值、调用、递增、递减和新对象表达式可以用作语句