2013-11-20 3 views
0

Что именно происходит в паранах оператора if?Синтаксис оператора if и приоритета оператора

Если у меня есть:

if(setX(), x === 5) 

ли, что интерпретируются как:

if((setX(), x) === 5) // which is the same as: 
setX(); if(x === 5) 

Или это интерпретируются как:

if((setX()), (x === 5)) 

(который в конечном счете то же самое, но мне все еще интересно узнать о синтаксисе.)

+0

Зачем ставить запятую в состоянии? Или это просто образец кода? –

ответ

1

Есть 3 вещи, которые происходят внутри этих скобок, в следующем порядке:

  1. вызов функции
  2. сравнение равенства
  3. оператор запятая

Код взят шаг за шагом:

// setup 
function setX(){ 
    return 3; 
} 
x = 4; 

// steps 
if (setX(),x === 5) 
// evaluate function call 
if (3,4 === 5) 
// evaluate equality comparison 
if (3,false) 
// evaluate comma operator 
if (false) 
// jump to the appropriate code branch 

Ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

1

Comma имеет least priority, так:

  • setX() будет оцениваться первым
  • x === 5 будет оцениваться второй
  • в if проверяет заявление на x === 5
1

Оператор запятая оценивает свои два операнда и возвращает значение правого операнда. Поэтому ваш оператор if будет результатом теста x === 5, выполняемого после функции setX().

ли это хороший стиль программирования, однако открыты для обсуждения .... :-)

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