selectItem(item, type) {
// if (type === 'year') {
// this.nowYear = item;
// }
type === 'year' ? this.nowYear = item : this.nowMonth = item;
},
这样写ESlint会报错,
使用if else 就可以,为什么?这样写那里不规范了
selectItem(item, type) {
// if (type === 'year') {
// this.nowYear = item;
// }
type === 'year' ? this.nowYear = item : this.nowMonth = item;
},
这样写ESlint会报错,
使用if else 就可以,为什么?这样写那里不规范了
应该是this指向的问题吧。。。不是用严格模式了。this找不到window了。
把this换成window.
不好意思。答非所问了。
;(type === 'year' ? this.nowYear = item : this.nowMonth = item);这样呢?
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
2 回答4.8k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
先回复 @Xeira :
这是不对的,从语法上来说,三目运算符后面的两项只要有返回值就是符合语法的。
只要是表达式就一定有返回值,就连
赋值表达式
都是如此。比如说吧:
赋值表达式返回的值就是等号的右值。
你还能在
if
、while
等等的条件判断语句里面赋值的,虽然并不常见就是了。回到题主的问题中,这个问题其实是因为你的eslint规则问题……
你看给出的错误提示:
no-unused-expressions
,别告诉我你不认识英文……这条规则的具体解释在这里:no-unused-expressions
这条规则有两个子规则:
一个是是否允许短路求值(
allowShortCircuit
)还有一个是是否允许三目运算符(
allowTernary
)所以你在eslint的配置文件里
rules
规则里面设定下就行了,短路求值和三目运算都允许:想要单独禁止某一项,比如下面是允许三目,不允许短路: