Já parou para pensar por que alguns memes do JavaScript ganharam tanta popularidade? Com as diversas formas da linguagem se desenvolver, acabamos nos deparando com algumas situações inusitadas enquanto estamos estudando ou trabalhando, ou as duas coisas. Mas vamos juntos entender por que o JavaScript é assim.
Para entender um pouco mais do porquê o JavaScript é assim, eu vou precisar voltar no tempo. A história de como o JavaScript surgiu e se desenvolveu acompanha a história da própria Web, porque o ambiente de interpretação original do JavaScript é o navegador e, ao contrário da maior parte das linguagens que têm um desenvolvimento mais centralizado, por exemplo, a Microsoft para o . NET e o C#, a Oracle para o Java e o Guido van Rossum, que mais tarde seria a Python Foundation para o Python, o JavaScript sempre esteve, desde a sua criação, enrolado numa luta entre navegadores e entre empresas de tecnologia.
Não entraremos em detalhes sobre a história do JavaScript, mas vale apontar algumas coisas para entendermos o contexto. Vamos começar lá em 1995 com Brendan Eich, que é quem viria a ser o desenvolvedor chefe do JavaScript. Na época ele trabalhava na Netscape, que era dona do melhor navegador e também o mais utilizado, o Netscape Navigator.
Quem lembra dele? Porém, na época, já tinha uma gigante de tecnologia de olho no mercado de navegadores, que naquela época não eram gratuitos, nem vinham por padrão com o sistema operacional e muito menos eram baixados da internet. Essa gigante era a Microsoft.
Essa tal luta entre navegadores começou entre a Netscape e a Microsoft e foi se desenrolando, entre outras coisas, na Microsoft fazendo uma espécie de engenharia reversa do Netscape para desenvolver o Internet Explorer em 1995. Junto com o Internet Explorer, a Microsoft desenvolveu também a sua própria versão do JavaScript chamada Jscript, que acabou dominando o mercado com o Internet Explorer. Mas por que a Microsoft acabou dominando o mercado?
Porque em 1996 a Netscape começou a trabalhar no processo de padronização da linguagem junto ao ECMA, a Associação Europeia de Fabricantes de Computadores. Essa padronização da linguagem ia servir para criar uma especificação a partir de onde todos os vendors que usavam a linguagem deveriam seguir. Mas, enquanto isso acontecia, a Microsoft incluiu o Internet Explorer no pacote do Windows 95 e agora todos os operadores que vinham com esse sistema operacional, já vinham também com o navegador, por padrão, não precisando mais comprar, nem instalar separado como anteriormente.
Estamos falando da mesma época em que começou o “boom” dos PC 's domésticos, quando muitas pessoas estavam tendo contato pela primeira vez com computadores e não tinham prática em mexer neles. Então, a maioria desses novos usuários usavam os programas que vinham com o sistema operacional. O Jscript da Microsoft, foi lançado em 1996 e tinha suporte inicial a CSS e às extensões HTML.
Mas essas implementações eram diferentes das que o Netscape usava, o que tornou a vida de quem desenvolvia sites naquela época um pesadelo, porque era muito difícil fazer com que os sites funcionassem bem nos dois navegadores. Por isso, naquela época e durante muito tempo depois, era comum encontrarmos avisos do tipo: “Este site é melhor visualizado com Internet Explorer” ou, ao contrário, "Este site é melhor visualizado com Netscape Navigator”. Enquanto a Microsoft corria por fora com o Internet Explorer, a ECMA foi levando o processo de padronização da linguagem que começou em 1996.
Isso levou alguns anos, divididos em algumas versões do agora chamado ECMAScript, a V1 em 1997, a V2 em 1998 e a V3 em 1999. Nesse meio tempo, o Internet Explorer ia dominando o mercado e chegou a 95% dos computadores em 2000. O que significava na prática, que o Jscript tinha dominado o mercado.
Com isso a Microsoft, que até chegou a colaborar com o processo de padronização do JavaScript, agora chamado ECMAScript, acabou o abandonando. Aí a V4 do ECMAScript acabou sendo interrompida. Durante a primeira década dos anos 2000 aconteceu bastante coisa.
Teve o lançamento do Mozilla Firefox, o sucessor do Netscape Navigator, teve desenvolvimento de várias bibliotecas e recursos que davam mais funcionalidades para o JavaScript, como, por exemplo, o AJAX e o JQuery, e em 2008 teve o lançamento do Google Chrome. Todo esse movimento, junto com a guerra de que navegadores que começou lá atrás, em 1995, com o Internet Explorer e o Netscape, resultou na tomada da padronização junto ao ECMA para resolver essa bagunça, e isso culminou no lançamento do ECMAScript V5. O importante disso tudo é: as quatro iniciativas ou empresas por trás dos navegadores, os tais vendors, a Google, a Apple, o Mozzila e a Microsoft tinham que entrar em consenso sobre como fazer as coisas, porque o núcleo do JavaScript em si é muito básico, praticamente todas as funcionalidades da linguagem estão justamente implementadas no navegador e o que resultou todo esse processo de criação da linguagem é que não existe jeito certo de fazer várias coisas em JavaScript, como, por exemplo, trabalhar com orientação a objetos, justamente pela forma como a linguagem se desenvolveu, que foi descentralizada e, digamos assim, no meio de conflitos comerciais.
Então, por que o JavaScript é assim? O JavaScript foi desenvolvido em pouco tempo, reza a lenda, inclusive, que foi algo entre 10 e 15 dias, o que impactou algumas decisões de design da linguagem e, sim, deixou alguns erros passarem. Segundo, sendo uma linguagem interpretada do lado do cliente, ou seja, no navegador, é preciso garantir que as versões posteriores sejam totalmente compatíveis com as anteriores, para não corrermos o risco de quebrar o que já está rodando com o código antigo.
Por esse motivo, alguns "erros", digamos assim, das primeiras versões não tiveram como ser modificados e nem retirados mais tarde, para não correr o risco do código antigo não funcionar mais. Essa mistura entre como o JavaScript foi pensado lá atrás, a história conturbada sobre como a linguagem se desenvolveu e essa característica de precisar de compatibilidade total desde a primeira versão, acabou resultando nesses comportamentos, muitas vezes não esperados, que se transformam em zuera, e se transformam em meme.