这个问题已经在这里有了答案: > Why does JSHint dislike ternaries for method calls on objects? 3个
我正在使用JSHint检查我的JS文件以查找错误.
我刚收到以下警告:
Expected an assignment or function call and instead saw an expression.
(mandatEngagementExists)
? $('.mandat-type[value=1]').prop('checked', false).prop('disabled', true)
: $('.mandat-type[value=1]').prop('disabled', false);
mandatEngagementExists是一个布尔值.
我所有的JS都处于严格模式.
这段代码可以正常工作,所以我想知道JSHint是否太严格,或者我是否应该改用经典的if / else.
解决方法:
直接在.prop(“ property”,boolean)内部使用布尔值
$(el).prop('checked', myBoolean);
使用退货
function myFn() {
/* Code here */
return myBoolean ? $(el).doThis() : $(el).doThat();
/* !!!!!!!!! >>> Cannot have more code here since `return` was used */
}
使用IIFE
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 */
}
否则使用
function myFn() {
/* Code here */
if(myBoolean) {
$(el).doThis();
} else {
$(el).doThat();
}
/* Code here */
}