是否可以压缩下面的函数以便没有创建变量?
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));
};
如果 flag 为真,那么它将执行如下操作:
return (true && !(flag = false)); //!(flag = false) is true, so true is returned.
如果 flag 为 false,那么它将执行如下操作:
return (false && !(flag = false)); //obviously returns false.
不过,我真的鼓励你不要这样做。它晦涩难懂,需要进行一些逻辑解析才能解决。我只是想证明在这种特定情况下可以做你想做的事情。
如果您只是翻转flag
between的值true
,false
那么这可能对您有用:
my.flagValue=function(){
return !(flag = newValue);
};
这将设置flag
为newValue
并从函数返回相反的值。
你也可以试试这个,如果我正确理解了这个问题:)
my.flagValue=function(){
return flag ? !flag : flag ;
};