Не понятное мне поведение Javascript

125
03 июля 2019, 14:20

Есть простейший к примеру код:

if(a > 1)
   if(a > 2) ..todo;
else ..nothing;

Если a > 1 но оказывается не больше 2 то происходит действия в else.

Почему так? Ведь else относится к false самой первой проверки а не её внутренней? Если я внесу выражение в фигурные скобки:

if(a > 1){
   if(a > 2) ..todo;
}
else ..nothing;

То при a больше 1 но не больше 2 else не сработает. Разве по логике без скобок не должно быть тоже самое? Это ведь просто сокращение а не направление внутреннего if к внешнему else даже если оно следует далее в коде.

Answer 1

Ведь else относится к false самой первой проверки

Нет.

В яваскрипте отступы не играют роли. Поэтому else относится к ближайшему if.

Т.е данный код

if(a > 1)
   if(a > 2) ..todo;
else ..nothing;

На самом деле является таким:

if(a > 1){
    if(a > 2) {
        ..todo;
    }
    else {
        ..nothing;
    }
}
READ ALSO
Имитирование checked

Имитирование checked

Есть у меня на странице checkbox и вот допустим когда страница загрузилась мне нужно что бы он как бы на жался, простая подстановка атрибута ничего...

130
Помогите с “SyntaxError: Unexpected token < in JSON at position ”

Помогите с “SyntaxError: Unexpected token < in JSON at position ”

Я не очень разбираюсьВозникает ошибка при загрузке изображений

117
Как делать POST запрос c Axios(Vue)?

Как делать POST запрос c Axios(Vue)?

Как правильно делать POST запрос с Axios

155