Я использую JQuery 1.7.1JavaScript Пример троичного оператора с функциями
Я только начал использовать тройной оператор JavaScript, чтобы заменить простыми, если/иначе. Я сделал это успешно в нескольких местах. Я был удивлен, когда я успешно сделал что-то еще, когда думал, что это не так, но я все равно попытался.
Вот оригинальное заявление:
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
if (IsChecked == true){
removeItem($this);
} else {
addItem($this);
}
}
Вот та же функция с трехзначным оператором:
function updateItem() {
$this = $(this);
var IsChecked = $this.hasClass("IsChecked");
(IsChecked == true) ? removeItem($this) : addItem($this);
}
Я был удивлен тем, что все примеры, которые я видел, которые были использованы только настройки переменных, как это :
x = (1 < 2) ? true : false;
Мой вопрос в том, является ли это «нормальным» использование и будет ли он работать в большинстве версий JavaScript? Где это произойдет? Существуют ли другие менее очевидные применения?
ОБНОВЛЕНИЕ - Спасибо за совет «настоящего мира» !!!
Я использую это как моя функция:
function updateItem() {
$this = $(this);
$this.hasClass("IsChecked") ? removeItem($this) : addItem($this);
}
Это нормально, и он будет работать нормально .. В гене ral, удобочитаемость трудно использовать при использовании тернарных операторов, но в вашем случае это выглядит просто отлично. –
Хм .... вы также можете это сделать, поскольку оба они принимают те же аргументы '(IsChecked? RemoveItem: addItem) ($ this)'. Однако, чтобы ответить на ваш вопрос, да, это нормально, и нет ничего плохого в использовании тернарных операторов, если они не умаляют ремонтопригодность или удобочитаемость в ситуации, когда это необходимо. http://jsfiddle.net/vsB3f/ –
'if ($ this.hasClass (" IsChecked ")) removeItem ($ this); else addItem ($ this) 'является правильным способом. Тернарный оператор не предназначен для подобных случаев, но для таких вещей, как 'foo (isChecked? 'Bar': meow());' (т.е. когда вы заботитесь о «возвращаемом значении» того, что вы делаете в блоках then/else) – ThiefMaster