1

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

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

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

4

3 回答 3

3

好吧,通常没有办法在设置之前返回一些东西。但在这种特定情况下,您可以使用一些魔法来实现它。尽管您的原始代码更具可读性和可维护性:

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

如果 flag 为真,那么它将执行如下操作:

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

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

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

不过,我真的鼓励你不要这样做。它晦涩难懂,需要进行一些逻辑解析才能解决。我只是想证明在这种特定情况下可以做你想做的事情。

于 2012-09-10T13:07:32.610 回答
2

如果您只是翻转flagbetween的值truefalse那么这可能对您有用:

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

这将设置flagnewValue并从函数返回相反的值。

于 2012-09-10T12:59:45.177 回答
0

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

   my.flagValue=function(){
             return flag ? !flag : flag ;
          };
于 2012-09-10T13:04:45.663 回答