我正在使用JSHint检查我的JS文件以找出错误。
我刚收到这个警告:
期望一个赋值或函数调用,而是看到一个表达式。
(mandatEngagementExists)
? $('.mandat-type[value=1]').prop('checked', false).prop('disabled', true)
: $('.mandat-type[value=1]').prop('disabled', false);
mandatEngagementExists
是一个布尔值。
我所有的JS都处于严格模式。
这段代码正在运行,所以我想知道JSHint是否有点过于严格,或者我是否应该切换到经典的if / else。
答案 0 :(得分:2)
.prop("property", boolean)
$(el).prop('checked', myBoolean);
return
function myFn() {
/* Code here */
return myBoolean ? $(el).doThis() : $(el).doThat();
/* !!!!!!!!! >>> Cannot have more code here since `return` was used */
}
function myFn() {
/* Code here */
(function(){
return myBoolean? $(el).doThis() : $(el).doThat();
}());
/* Code here */
}
var
var someVar;
function myFn() {
/* Code here */
someVar = myBoolean? $(el).doThis() : $(el).doThat();
/* Code here */
}
if else
function myFn() {
/* Code here */
if(myBoolean) {
$(el).doThis();
} else {
$(el).doThat();
}
/* Code here */
}
答案 1 :(得分:2)
JSHint认为三元运算符被称为忽略被调用函数的返回值是不好的做法。
请参阅Why does JSHint dislike ternaries for method calls on objects?
你可以忽略警告,设置假变量
var temp=(mandatEngagementExists)
? $('.mandat-type[value=1]').prop('checked', false).prop('disabled', true)
: $('.mandat-type[value=1]').prop('disabled', false);
或使用此
/*jshint expr:true */