I am trying to work out some obfusicated code by reading it, and I was doing pretty well until a came across this:
a = a && "*"
Now I am still quite new to Javascript and these shortened uncommon javascript codes are still very foreign to me, this is the first time I have come across them.
Does anybody know what this does? I attempted it in a javascript code tester ad it just returned *, so I do not know.
Also, if anybody knows where I can look to find out what these uncommon lines of code do, that would be very helpful. They are all shortened and are sorts of things like this and
a = a || b
(I know what that one does)
But If there is some sort of name for this kind of javascript or a reference I can look at, that would be very helpful, I have been scouring Google for hours.
Thanks
If a is truthy, it assigns "*" to a.
If a is falsy, it remains untouched. 
&& has short-circuit semantics: A compound expression (e1) && (e2)—where e1 and e2 are arbitrary expressions themselves—evaluates to either
e1 if e1 evaluates to false in a boolean context—e2 is not evaluatede2 if e1 evaluates to true in a boolean contextThis does not imply that e1 or e2 and the entire expression (e1) && (e2) need evaluate to true or false!
In a boolean context, the following values evaluate to false as per the spec:
All1 other values are considered true.
The above values are succinctly called "falsy" and the others "truthy".
Applied to your example: a = a && "*"
According to the aforementioned rules of short-circuit evaluation for &&, the expression evaluates to a if a is falsy, which is then in turn assigned to a, i.e. the statement simplifies to a = a.
If a is truthy, however, the expression on the right-hand side evaluates to *, which is in turn assigned to a.
As for your second question: (e1) || (e2) has similar semantics:
The entire expression evaluates to:
e1 if e1 is truthye2 if e1 is falsy1Exception
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With