This is a comma operator . It evaluates its left operand, discards the result, evaluates its right operand, and takes it as the value of the result. It is associative from left to right, so a, b, c evaluate a , then b , then c and take the result c as a value.
In your example, it is exactly like this:
myfunc(); myobj.myvar = someobj.prop; return myobj;
Some people really prefer to do something on the same line, even if there is no objective reason for this. There is no use in the example you cited, and in fact it is confusing, because it seems that the first two bits refer to the value that will ultimately be returned, which is not the case. (I wrote that before you told us that this is minimized code; it is obvious that obscurity for people is only a problem of source code, not minimized code.)
Since you said that this is a minifier, there is very little possible benefit that a minifier could have if it is part of a conditional block: it can store one or two characters. If we assume that the long form looked like this:
if (someCondition) { myfunc(); myobj.myvar = someobj.prop; return myobj; }
... using the comma operator, the minifier can do this (63 characters):
if(someCondition)return myfunc(),myobj.myvar=someobj.prop,myobj
... and not this (65 characters):
if(someCondition){myfunc();myobj.myvar=someobj.prop;return myobj}
... without changing the functionality of the code, if it follows } or any other appropriate character (or end of file) to start automatically inserting a semicolon at the end. Otherwise, it will be necessary ; on the first, but it still saves one character.