Когда я запускаю следующий фрагмент кода JS:
var x = (function () {
console.log('Hello x!');
});
var y = function () {
console.log('Hello y!');
};
var z = (function () {
console.log('Hello z!')
return 2;
})();
x();
y();
На консоли браузера выводится следующий вывод:
Hello z!
Hello x!
Hello y!
Почему " Hello z! " печатается раньше " Hello x !" & " Здравствуйте, y! ". И как взаимодействует выражение немедленного вызова функции (IIFE) с переменной 'z'?
PS: я новичок.