В JavaScriptJavaScript старшинства и ассоциативности
var x = (5 >= 9 >= 0);
console.log(x);
// returns true
Что происходит в этом заявлении, и что является причиной этого выхода?
В JavaScriptJavaScript старшинства и ассоциативности
var x = (5 >= 9 >= 0);
console.log(x);
// returns true
Что происходит в этом заявлении, и что является причиной этого выхода?
true
заявление, понимается как отличен от нуля ... Следовательно, false
является равна нулю ...
Оператор:
(5>=9>=0)
Превращается в
(false >= 0)
С 5 ниже, чем 9. Тогда, если ложно, равна нулю, то результат верно
EDIT
Как объяснено здесь (All falsey values in JavaScript), ноль среди falsy значений в JavaScript ...
Operator precedence and Associativity chart объясняет, что происходит. Выражение вычисляется в таком порядке:
/* 1 */ x = (5 >= 9) >= 0;
/* 2 */ x = false >= 0;
/* 3 */ x = true;
Пояснение:
>=
левоассоциативно оператора от 5 до 9 оценивается в первую очередь.>=
использует абстрактное сравнение, которое преобразует boolean в число i.e. false
становится 0 (ref).true
.(5> = 9) = true? действительно? –
LOL (false> = 0) = false? –
Реальный вопрос: почему 'false == 0' в нестандартном сравнении – adeneo
Это создаст синтаксическую ошибку. Вы имели в виду 'var' вместо' boolean'? –
Как вы думаете, что происходит? – mplungjan
Что вы ожидали вместо «истины»? – Teemu