I am using jQuery 1.7.1
I am just starting to use the JavaScript ternary operator to replace simple if/else statements. I have done so successfully in several places. I was surprised when I successfully made something else work when I thought for sure it wouldn’t, but I tried anyway.
Here’s the original statement:
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
if (IsChecked == true){
removeItem($this);
} else {
addItem($this);
}
}
Here’s the same function using the ternary operator:
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
(IsChecked == true) ? removeItem($this) : addItem($this);
}
I was surprised because all of the examples I saw being used were merely setting variables like this:
x = (1 < 2) ? true : false;
My question is whether this is “normal” use and will it work in most versions of JavaScript? Where will it fail? Are there other less obvious uses for it?
UPDATE — Thanks for the “real world” advice!!!
I am using this as my function:
function updateItem() {
$this = $(this);
$this.hasClass("IsChecked") ? removeItem($this) : addItem($this);
}
Heh, there are some pretty exciting uses of ternary syntax in your question; I like the last one the best…
The use of ternary here is totally unnecessary – you could simply write
Likewise, the condition element of a ternary statement is always evaluated as a Boolean value, and therefore you can express:
Simply as:
In fact, I would also remove the
IsCheckedtemporary as well which leaves you with:As for whether this is acceptable syntax, it sure is! It’s a great way to reduce four lines of code into one without impacting readability. The only word of advice I would give you is to avoid nesting multiple ternary statements on the same line (that way lies madness!)