Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Различная реакция на переопределение идентификатора в браузерах Opera и Firefox (https://javascript.ru/forum/misc/62139-razlichnaya-reakciya-na-pereopredelenie-identifikatora-v-brauzerakh-opera-i-firefox.html)

Interloper 26.03.2016 12:37

Различная реакция на переопределение идентификатора в браузерах Opera и Firefox
 
Как объяснить различную реакцию на выполнение следующего кода в разных браузерах?

var func = function() { console.log('1'); };
function func() { console.log('2'); }
func();



При выполнении в Opera 36.0.2130.32 выдается ошибка:
"SyntaxError: Identifier 'func' has already been declared
at https://static.jsbin.com/js/prod/run...min.js:1:13891
at https://static.jsbin.com/js/prod/runner-3.35.11.min.js:1:10820"



При выполнении в Firefox 44.0.2 ошибка не выдается, и в консоль выводится значение "2".
Вот ссылка на jsbin: https://jsbin.com/hijobojawe/1/edit?js,console,output

Interloper 26.03.2016 14:23

Цитата:

Сообщение от Rise (Сообщение 412081)
Interloper, разные движки, разные браузеры, может быть разная реакция как не странно.

Меня интересуют конкретно технические детали в данном случае.

Octane 30.03.2016 13:39

Так происходит, потому что JS Bin оборачивает код в try-catch, function declaration оказывается внутри блока и всплывают различия в реализации.


Часовой пояс GMT +3, время: 05:02.