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));
};

フラグがtrueの場合、次のように実行されます。

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

フラグがfalseの場合、次のように実行されます。

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

ただし、これを行わないことを強くお勧めします。それはあいまいであり、整理するために少しのロジック解析が必要です。この特定のケースで、あなたが探していることを実行できることを示したかっただけです。

于 2012-09-10T13:07:32.610 に答える
2

の値を反転するだけの場合は、次のように機能する可能flag性がtrueありfalseます。

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 に答える