设置和返回变量值而不创建其他变量

时间:2012-09-10 12:57:18

标签: javascript variables

是否可以压缩下面的函数,因此没有创建变量?

    var flag=true;
    //...
    my.flagValue=function(){
        var f=flag;
        flag=false;
        return(f);
    };

基本上,要同时设置和返回(前一个)值。

3 个答案:

答案 0 :(得分:3)

嗯,通常在设置之前无法返回某些内容。但是在这个特定的情况下,你可以使用一些魔法将它拉下来。虽然您的原始代码更具可读性和可维护性:

my.flagValue = function () {
    return (flag && !(flag = false));
};

如果flag为true,则它将执行如下操作:

return (true && !(flag = false)); //!(flag = false) is true, so true is returned.

如果flag为false,则它将执行如下操作:

return (false && !(flag = false)); //obviously returns false.

尽管如此,我确实鼓励你不要这样做。这是模糊的,需要一些逻辑解析来整理。我只是想证明在这种特定情况下可以做你想要做的事情。

答案 1 :(得分:2)

如果您只是在flagtrue之间翻转false的值,那么这可能对您有用:

my.flagValue=function(){
    return !(flag = newValue);
};

这会将flag设置为newValue并从函数中返回相反的值。

答案 2 :(得分:0)

你也可以试试这个,如果我正确地理解了这个问题:)

   my.flagValue=function(){
             return flag ? !flag : flag ;
          };