javascript-三元运算符中的执行函数

这个问题已经在这里有了答案:            >            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 */
}
上一篇:javascript-JSHint警告“在循环中声明的引用外部作用域变量的函数可能会导致语义混乱”.如何改善代码?


下一篇:javascript – jslint和jshint之间的区别?