2013-12-17 4 views
1

Какую цель знак вопроса служить в следующем фрагменте кода:Какова цель «?» в Javascript?

Template.lists.selected = function() { 
    return Session.equals('list_id', this._id) ? 'selected' : ''; 
}; 
+7

Это условный оператор JavaScript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator – Matt

+1

@Matt Вы правы, но это не специально для javascript. – sdespont

+3

@sdespont Спасибо, я уже собирался добавить, что этот оператор был уникален для JavaScript, и ни один другой язык не имеет его, но тогда ваш комментарий спас меня от этого смущения. (На самом деле я упомянул об этом так, чтобы OP знал, что это не часть рулей или метеор, а скорее язык JavaScript) – Matt

ответ

6

Это известно как тройной оператор в ряде языков. Это ярлык для полного заявления if-then.

Вместо написания этого:

Template.lists.selected = function() { 
    if(Session.equals('list_id', this._id)) { 
     return 'selected'; 
    } 
    else { 
     return ''; 
    } 
}; 

Вы можете сделать это:

Template.lists.selected = function() { 
    return Session.equals('list_id', this._id) ? 'selected' : ''; 
}; 

if возвращение сразу после знака вопроса; Возврат else после двоеточия.

+0

Знаете ли вы, есть ли ярлык, чтобы сделать это внутри шаблона напрямую? Что-то вроде {{#tertiary true, 'iftrue', 'iffalse'}} – portforwardpodcast

+0

Извините, я ничего не знаю о метеор. Это прямолинейная программирующая конструкция. – EmmyS

+0

Я хотел бы сделать это внутри шаблона рулей, но это будет связано с использованием специального вспомогательного блока. Так что я кое-что придумаю – portforwardpodcast

Смежные вопросы