- Notifications
You must be signed in to change notification settings - Fork111
An Introduction to JavaScript#240
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:master
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Changes fromall commits
File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -13,22 +13,22 @@ Os scripts são fornecidos e executados como texto puro. Eles não precisam de p | ||||||
| Neste aspecto, o JavaScript é muito diferente de outra linguagem chamada [Java](https://pt.wikipedia.org/wiki/Java_(linguagem_de_programação)). | ||||||
| ```smart header="Por que é chamado <u>Java</u>Script?" | ||||||
Contributor There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. Would you change to:
| ||||||
| Quando o JavaScript foi criado, tinha outro nome: "LiveScript". Mas Java era muito popular naquela época, então foi decidido que posicionar uma nova linguagem como um "irmão mais novo" de Java ajudaria. | ||||||
| Mas à medida que ele evoluiu, o JavaScript se tornou uma linguagem totalmente independenteecomasua própria especificação chamada [ECMAScript](https://pt.wikipedia.org/wiki/ECMAScript), e agora ele não tem nenhuma relação com Java. | ||||||
| ``` | ||||||
| Hoje, o JavaScript pode ser executado não só no navegador,como também no servidor, ou mesmo em qualquer dispositivo que tenha um programa especial chamado [Interpretador JavaScript](https://pt.wikipedia.org/wiki/Interpretador_de_JavaScript). | ||||||
| O navegador tem um interpretador(motor) incorporado queàs vezes é chamado de "máquina virtual JavaScript". | ||||||
| Interpretadores diferentes têm "codinomes" diferentes. Por exemplo: | ||||||
| - [V8](https://pt.wikipedia.org/wiki/V8_(JavaScript)) -- no Chrome, Opera e Edge. | ||||||
| - [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- no Firefox. | ||||||
| - ...Há outros codinomes como "Chakra" para o IE, "JavaScriptCore", "Nitro" e "SquirrelFish" para Safari, etc. | ||||||
| Os termos acima são bons para lembrar, pois são usados em artigos de desenvolvedores na internet.Nóstambém os vamos usar. Por exemplo, se "um recurso X é suportado pelo V8", então ele provavelmente funciona noChrome, Opera e Edge. | ||||||
| ```smart header="Como funcionam os interpretadores?" | ||||||
Contributor There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. Would you also change:
| ||||||
| @@ -45,39 +45,39 @@ O interpretador aplica otimizações em cada etapa do processo. Ele ainda observ | ||||||
| JavaScript moderno é uma linguagem de programação "segura". Ele não fornece acesso de baixo nível à memória ou CPU, porque foi inicialmente criado para navegadores que não necessitam dele. | ||||||
Contributor There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. Suggested change
| ||||||
| As capacidades do JavaScript dependem muito do ambiente em que está sendo executado. Por exemplo, [Node.js](https://pt.wikipedia.org/wiki/Node.js) suporta funções que permitem ao JavaScript ler/gravar arquivos arbitrários, executar solicitações de rede, etc. | ||||||
| O JavaScript no navegador pode fazer tudo relacionado à manipulação de páginas web, interação com o usuário e o servidor web. | ||||||
Contributor There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. Suggested change
| ||||||
Contributor There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more.
| ||||||
| Por exemplo, o JavaScript no navegador é capaz de: | ||||||
| - Adicionar novo HTML à página, alterar o conteúdo existente, modificar estilos. | ||||||
| - Reagir às ações do usuário,executando código seguindo cliques de mouse, movimentos de ponteiro, pressionamentos de teclas. | ||||||
| - Enviar solicitações através da rede para servidores remotos, baixar e carregar arquivos (as chamadas tecnologias [AJAX](https://pt.wikipedia.org/wiki/Ajax_(programa%C3%A7%C3%A3o)) e [COMET](https://pt.wikipedia.org/wiki/Comet_(programa%C3%A7%C3%A3o))). | ||||||
| - Obter e definir cookies, fazer perguntas ao visitante, mostrar mensagens. | ||||||
| -Lembrar-se dos dados no lado do cliente ("local storage"). | ||||||
| ## O que o JavaScript no navegador não pode fazer? | ||||||
| As habilidades do JavaScript no navegador são limitadas por uma questão de segurança do usuário. O objetivo é evitar que uma página maléfica acesse informações privadas oudanifique os dados do usuário. | ||||||
| Exemplos de tais restrições incluem: | ||||||
| -OJavaScript em uma página não pode ler/gravar/copiar arquivos arbitráriosou executar programas, se estes estiverem no disco rígido. Não tem acesso direto às funções do sistema operacional. | ||||||
| Os navegadores modernos permitem que ele trabalhe com arquivos, mas o acesso é limitado e fornecido apenas se o usuário executar determinadas ações, como "dropping" de um arquivo em uma janela do navegador ou selecioná-lo por meio de umaentrada de formulário. | ||||||
| Existem maneiras de interagir com a câmera/microfone e outros dispositivos, mas eles exigem permissão explícita do usuário. Assim, uma páginacom o JavaScriptativo nãopode às encondidashabilitar uma câmera web, observar os arredores e enviar as informações para a [Agência de Segurança Nacional (NSA)](https://pt.wikipedia.org/wiki/Ag%C3%AAncia_de_Seguran%C3%A7a_Nacional). | ||||||
| - Diferentes abas/janelas geralmente não se conhecem mutuamente.Mas àsvezes sim, por exemplo, quando uma janela usa JavaScript para abrir outra. Mas, mesmo neste caso,oJavaScriptnumapágina pode não acessar a outra seelas vierem de sites diferentes (de um domínio, protocolo ou portadiferentes). | ||||||
| Isto é chamado de "Política de mesma origem". Para contornar isso, *ambas as páginas* devemconcordar em trocar dados e conter código JavaScript específico para o fazer. | ||||||
| Essa limitação é, novamente, para a segurança do usuário. Uma página de `http://umsitequalquer.com.br` que um usuário abriu não deve poder alcançar uma outra aba do navegador com a URL `http://gmail.com` e roubar a informação de lá. | ||||||
| - O JavaScript pode se comunicar facilmente pela rede com o servidor de onde a página atual veio. Masasua capacidade de receber dados de outros sites/domínios élimitada. Embora possível, requer acordo explícito (expresso em cabeçalhos HTTP) do lado remoto. Mais uma vez,esta é uma limitação de segurança. | ||||||
|  | ||||||
| Esses limites não existem se o JavaScript for usado fora do navegador, por exemplo, em um servidor. Os navegadores modernos também permitem plugins/extensões que podem solicitar permissões estendidas. | ||||||
| ## O que torna o JavaScript único? | ||||||
| @@ -86,23 +86,23 @@ Há pelo menos *três* grandes aspectos do #"b9f87bde971507c8c2338a17f0400830bf0b4e188177286585a5e72ab733d597"> | ```compare | |||||
| + Integração total com HTML/CSS. | ||||||
| + Coisas simples são feitas de forma simples. | ||||||
| + Suporteem todos os principais navegadores, e ativado por padrão. | ||||||
| ``` | ||||||
| OJavaScript é a única tecnologia de navegador que combina estas três qualidades. | ||||||
| Isso é o que torna o JavaScript único. É por isso que é a ferramenta mais difundida para criar interfaces de navegador. | ||||||
| Dito isto, o JavaScript pode ser usadoparacriar servidores, aplicativos móveies, etc. | ||||||
| ## Linguagens "sobre" JavaScript | ||||||
| A sintaxe do JavaScript não se adapta às necessidades de todos. Pessoas diferentes querem características diferentes. | ||||||
| Isso é de se esperar, porque projetos e requisitos são diferentes para todos. | ||||||
| Então, recentemente uma infinidade de novas linguagens apareceu, que são *transpiladas* (convertidas) para JavaScript antes de rodarem no navegador. | ||||||
| Ferramentas modernas tornam a transpilação muito rápida e transparente, permitindo que os desenvolvedores codifiquem em outra linguagem e auto-convertendo "nos bastidores". | ||||||
| Exemplos de tais linguagens: | ||||||