Странное поведение JS

lo = {};
lo.init = function() {
    console.log('2')
}

(function() {})();
        
console.log('1')

lo.init();


jsfiddle.net/EqTJ3/

Результат:
2
Uncaught TypeError: undefined is not a function 

А ожидалось
1
2
  • Вопрос задан
  • 4402 просмотра
Пригласить эксперта
Ответы на вопрос 6
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Срабатывает ASI.

Сделайте ;(function() {})(); — будует работать.
Ответ написан
nur
@nur
Если расставить запятые как положенно то все работает
lo = {};
lo.init = function() {
    console.log('2');
};

(function() {})();
        
console.log('1');

lo.init();


Видимо как то криво разбирается на лексемы изза отсутствия; после объявления
lo.init = function() {
    console.log('2');
};
Ответ написан
Комментировать
rWeb
@rWeb
В данном случае нужно поставить точку с запятой после:

lo.init = function() {
console.log('2')
}

В противном случае (function() {}) трактуется как вызов функции с аргументом.
Ответ написан
Комментировать
Keenest
@Keenest
Думаю что не буду оригинален, и всё же скажу — вы забыли точку с запятой, из-за этого и проблема!
Ответ написан
Комментировать
@santeri
вы забыли точку с запятой после
lo.init = function() {
console.log('2')
}
Ответ написан
Комментировать
@lega Автор вопроса
Всем спасибо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы