我敢打赌,通过从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);

09-25 20:06