是否可以压缩下面的函数,因此没有创建变量?
var flag=true;
//...
my.flagValue=function(){
var f=flag;
flag=false;
return(f);
};
基本上,要同时设置和返回(前一个)值。
答案 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)
如果您只是在flag
和true
之间翻转false
的值,那么这可能对您有用:
my.flagValue=function(){
return !(flag = newValue);
};
这会将flag
设置为newValue
并从函数中返回相反的值。
答案 2 :(得分:0)
你也可以试试这个,如果我正确地理解了这个问题:)
my.flagValue=function(){
return flag ? !flag : flag ;
};