Skip to content

Latest commit

 

History

History
57 lines (19 loc) · 3.53 KB

002.md

File metadata and controls

57 lines (19 loc) · 3.53 KB

O Javascript é uma linguagem script dinâmica, fracamente tipada, baseada em protótipos e que possui funções de primeira classe.

Linguagem dinâmica: Linguagem de alto nível que executa em tempo de execução várias tarefas que outras linguagens executariam durante a compilação.

Fracamente tipada: Suporta conversão de tipos implícita, e não se declara o tipo na inicialização da variável.

Baseada em protótipos: Estilo de orientação a objetos onde classes não existem, dessa forma o reuso (herança para linguagens baseadas em classe) é feito clonando objetos existentes que servem assim de protótipos.

Funções de primeira classe: Habilidade da linguagem de passar functions como argumentos para outras functions, retornar functions como valor em outras funções, atribuir functions a variáveis e armazenar functions em estruturas de dados.

Uma função em Javascript é composta pelas seguintes partes:

Palavra reservada function.

Nome da função (opcional). Quando o nome não é declarado, a função é chamada de anônima.

Parâmetros separados por vírgula. Serão atribuídos a eles variáveis de mesmo nome dentro da função. Ao invés de serem inicializados com undefined, são inicializados diretamente pelo arguments.

Comportamento.

Funções em Javascript é um assunto bastante extenso e crítico para o entendimento real da linguagem. Posso falar com propriedade que a simples compreensão dos conceitos envolvidos já evitou que eu presenciasse muitos tiros no próprio pé.

O Javascript é descrito na Wikipedia como uma linguagem script dinâmica, fracamente tipada, baseada em protótipos e que possui funções de primeira classe. What? Realmente o significado disso pode não ficar tão claro de tempos em tempos, então vamos relembrar algumas coisas.

Linguagem dinâmica: Linguagem de alto nível que executa em tempo de execução várias tarefas que outras linguagens executariam durante a compilação.

Fracamente tipada: Suporta conversão de tipos implícita, e não se declara o tipo na inicialização da variável.

Baseada em protótipos: Estilo de orientação a objetos onde classes não existem, dessa forma o reuso (herança para linguagens baseadas em classe) é feito clonando objetos existentes que servem assim de protótipos.

Funções de primeira classe: Habilidade da linguagem de passar functions como argumentos para outras functions, retornar functions como valor em outras funções, atribuir functions a variáveis e armazenar functions em estruturas de dados. Os conceitos acima são indispensáveis pra compreender de verdade o que realmente são as funções no Javascript. Funções no Javascript são tão importantes que alguns preferem dizer que o Javascript

Os conceitos acima são indispensáveis pra compreender de verdade o que realmente são as funções no Javascript. Funções no Javascript são tão importantes que alguns preferem dizer que o Javascript como Functional Oriented Language. A razão disso é que funções no Javascript fazem mais que separar lógica dentro de unidades de execução. Elas são funções de primeira classe e possibilitam também a injeção de escopo e a habilidade de criar objetos.

Ter funções com tantas possibilidades e responsabilidades pode ser considerado uma bênção ou uma maldição. Bênção porque isso torna a linguagem versátil e rápida, e maldição porque isso faz com que você facilmente dê tiros no seu próprio pé se você não souber o que está fazendo.