在三元运算符中执行函数
Execute function in ternary operator
我正在使用 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);
使用return
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 */
}
使用if else
function myFn() {
/* Code here */
if(myBoolean) {
$(el).doThis();
} else {
$(el).doThat();
}
/* Code here */
}
JSHint 将调用的三元运算符视为忽略调用函数的 return 值的不良做法。
见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 */
我正在使用 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);
使用return
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 */
}
使用if else
function myFn() {
/* Code here */
if(myBoolean) {
$(el).doThis();
} else {
$(el).doThat();
}
/* Code here */
}
JSHint 将调用的三元运算符视为忽略调用函数的 return 值的不良做法。
见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 */