预定义我正在制作什么类型的变量

时间:2011-01-05 12:28:09

标签: javascript variables integer

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

3 个答案:

答案 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);