Почему следующие коды выдают разные результаты между Chrome и Firefox?
f = function() {return true;};
g = function() {return false;};
(function() {
if (g() && [] == ![]) {
f = function f() {return false;};
function g() {return true;}
}
})();
console.log(f());
В Chrome: результат false
. Однако в Firefox это true
.
Ключевая строка вышеуказанных кодов - строка 4, и основываясь на моем знании подъема имени функции, функция g
должна быть в строке 6, а именно строка 2 переопределена линией 6. ИМО, поведение Chrome корректен.
Я прав? если да, то почему Firefox выводит разные результаты?