変数が作成されないように、以下の関数を圧縮することは可能ですか?
var flag=true;
//...
my.flagValue=function(){
var f=flag;
flag=false;
return(f);
};
基本的に、(前の)値の設定と戻りを同時に行います。
変数が作成されないように、以下の関数を圧縮することは可能ですか?
var flag=true;
//...
my.flagValue=function(){
var f=flag;
flag=false;
return(f);
};
基本的に、(前の)値の設定と戻りを同時に行います。
さて、通常、それを設定する前に何かを返す方法はありません。しかし、この特定のケースでは、魔法を使ってそれをやってのけることができます。元のコードははるかに読みやすく、保守しやすいですが、
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.
ただし、これを行わないことを強くお勧めします。それはあいまいであり、整理するために少しのロジック解析が必要です。この特定のケースで、あなたが探していることを実行できることを示したかっただけです。
の値を反転するだけの場合は、次のように機能する可能flag
性がtrue
ありfalse
ます。
my.flagValue=function(){
return !(flag = newValue);
};
これは、関数に設定さflag
れnewValue
、関数から反対の値を返します。
私が質問を正しく理解していれば、これも試すことができます:)
my.flagValue=function(){
return flag ? !flag : flag ;
};