我敢打赌,通过从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
答案 0 :(得分:3)
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);
答案 1 :(得分:1)
这不是获得正确类型的问题......您定义了该函数,但没有执行它!你可以让它自动执行:
jc.half = (function(){
if(jc.singlerow){
return jc.total
}else{
return jc.total / 2;
}
}) (); // Notice the empty brackets that actually execute the function
虽然,甚至有必要使用这个功能吗?
jc.half = jc.singlerow ? jc.total : jc.total /2;
答案 2 :(得分:1)
目前尚不清楚为什么需要一个功能。
js.half = js.singlerow ? js.total : Math.floor(js.total/2);