Middle+
Existe um código com uma função auto-invocada (IIFE) usando var. O que será exibido no console ao chamar typeof a e typeof b fora da função? Como o comportamento mudará no modo estrito?
sobes.tech IA
Resposta da IA
Se dentro de uma IIFE forem declaradas variáveis usando var, por exemplo:
(function() {
var a = 10;
b = 20; // sem var
})();
console.log(typeof a); // "undefined"
console.log(typeof b); // "number"
A variável a declarada com var dentro da função é local e não acessível de fora, por isso typeof a retornará "undefined".
A variável b declarada sem var, let ou const, no modo não estrito, leva à criação de uma variável global. Portanto, typeof b retornará "number".
No modo estrito ('use strict';), tentar atribuir a uma variável não declarada (b = 20;) causará um erro ReferenceError, e a variável global não será criada. Assim, fora da função, ambas as variáveis não estarão acessíveis, e typeof a e typeof b retornarão "undefined" (ou um erro será lançado antes disso).