我敢打赌,通过从jc.half = jc.half();
中删除该部分,以下情况会更有效。我不确定如何。
jc.half = function(){
if(jc.singlerow){
return jc.total
}else{
return jc.total / 2;
}
}
// returns function()
jc.half = jc.half();
// returns the right integer
我正在寻找一种解决方案,例如:
jc.half = returnInteger(function(){
if(jc.singlerow){
return jc.total
}else{
return jc.total / 2;
}
})
// returns the right integer
最佳答案
jc.half = (function() {
return jc.singlerow ? jc.total : jc.total / 2;
})();
诀窍是,当您以这样一种方式开始函数声明时,解析器可以说出它是表达式中的一个值,那么函数定义就是表达式的一部分,您可以使用它方式并调用函数。确实,在这样的任务的右侧,甚至没有必要使用“包装”括号,但我这样做只是出于习惯,在阅读代码时要让自己清楚。
当然,在这种情况下,您可以完全省略该功能。
jc.half = jc.singlerow ? jc.total : jc.total / 2;
编辑-一个有用的评论者指出,您提到您需要一个整数;如果是这样,您将需要对结果调用
Math.floor()
或Math.round()
。或者,您可以“作弊”一点,然后执行以下操作:jc.half = ~~(jc.singlerow ? jc.total : jc.total / 2);