2014-07-10 3 views
0

По кишка-чувство я знаю следующее быть неправильный синтаксис, или, по крайней мере, не работает как задумано (пробовал), но нет никакой ошибки выброшены либо:Javascript выражения множественного сравнения синтаксиса

var x = 2; 
if (1 < x < 3) ... 

Я предполагаю, что виртуальная машина сначала оценивает часть выражения, затем сравнивает ее с остальными, но кто-нибудь действительно знает (желательно с ссылкой на документацию) то, что происходит здесь точно?

Редактировать: Я нашел similar question, у которого есть решения, как писать это, но меня действительно интересует, что происходит за кулисами здесь.

ответ

2

Используйте это:

if (1 < x && x < 3) 

Что вы делали, было

if (
    (1 < x) // boolean, cast to 0 or 1 
    < 3 
) 

This page from the MDN on operator precedence объясняет, что < интерпретируется слева направо.

+0

Спасибо, я действительно не ищу решение о том, как это записать, но для ответов, объясняющих, что происходит (документация для него). – kontur

+0

@ kontur Я уже достаточно ясно ответил? Чего не хватает ? –

+0

Почему '1 kontur

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