Декларация языка javascript позволяет сделать очень много комбинаций из разнообразных выражений и по мнению компилятора/интерпретатора все они будут вполне законны и будут выполняться без ошибок.
Некоторые из них хорошо описаны в статье Ниндзя-код, но пару дней назад мне попался не знакомый мне вариант, который заставил меня усомниться в моих знаниях javascript
Вот этот код (страничка в браузере):
<body>
<script>
window.myproj = {};
window.myproj.func1 = () => {
alert(getFirstName());
}
</script>
<script>
window.myproj.func2 = () => {
myproj.func1(
getFirstName = () => { return "Alex"; },
);
}
</script>
<script>
window.myproj.func2();
</script>
</body>
Можно ли по коду сказать что покажет в диалоге func2?
Я не смог.