I often see and use codes like:
var myvar = (1 < 2) ? 3 : 4 ; //if 1 < 2 then myvar = 3, else = 4
But I just recently saw a code that was executing code, just like some kind of replacement for the if(){}else{}:
Example:
(1 < 2) ? alert("example1") : alert("example2");
The first thoughts that came to me were, “wow, this is like 6-7 characters shorter”, “endless of possibilities” or “this made my day”.
My question:
- Is this thing error-free and safe to use? (like, with a lot of code inside, and nested stuff)
For now, I will just keep using it in the normal way, I have the fear that if I start using it to execute pieces of code might not work.
There are some exceptions. You can’t do this with:
breakcontinueif,for,while,do, ortryfor example. What’s more, it can mess with your order of operations:
But that’s not the reason not to do it, it’s because it’s ugly. Which one is clearer to you, this:
or
? It’s not quite right, is it? And saving characters is never a reason to do anything, really; otherwise there would be no comments or whitespace. A good minifier like Google Closure Compiler will automatically convert these for you when possible, and there are plenty of other places to save. In the end, it’s just whatever you find most convenient and readable.
Also, if you do end up needing
break,continue, etc. then it’s going to be rather inconsistent and unattractive code.