Semelhante ao Java, mas não é Java

Tem coisas que o Java não tem

E vice versa

JavaScript

Java

  • Orientada a Objetos;
  • Herança é feita através de mecanismo de prototipação;
  • Propriedades e métodos podem ser atribuídas a qualquer objeto dinamicamente.
  • Orientada a Objetos usando Classes;
  • Objetos são divididos em classes e instâncias;
  • Propriedades e métodos não podem ser atribuídas a qualquer objeto dinamicamente.
  • Tipos de dados não são declarados (dynamic typing);
  • Exemplo:
  • var i = 0;
  • i = "Teste";
  • Tipos de dados devem ser declarados (static typing);
  • Exemplo:
  • int i = 0;
  • Não pode escrever em disco;
  • Pode escrever em disco;

Fonte: http://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/JavaScript_Overview#What_is_JavaScript.3F

Há muitas maneiras erradas de escrever código JavaScript

Desenvolvimento em JavaScript pode ser bottom-up ao invés de top-down

Criação do LiveScript

Semelhante ao Java, mas não é Java

Foi chamado de JavaScript no Netscape 2.0

Criação do JScript

Padronização da linguagem: ECMAScript

Avançado, para bons programadores

Onde pode ser executada

principalmente no navegador Web

também para automatizar programas

e para desenvolvimento em Geral

O que para fazer

Implementar comportamento em Páginas Web

Reescrever o código HTML de uma página depois de carregar a página

Reescrever o código CSS de uma página depois de carregar a página

Criar imagens depois de carregar a página

Validar formulários

Escrever cookies

Corrigir bugs  do IE6 e 7

Implementar CSS3

Implementar HTML5

O que não dá para fazer no browser

Ler arquivos do Sistema Operacional

Executar outros programas

Ler o histórico do navegador

Configurar o upload de um arquivo

Fechar uma janela que não foi aberta pelo JavaScript

Fonte:

http://alex.dojotoolkit.org/2008/08/the-ecmajavascript-name-soup/

Versão JavaScript Versão do Firefox / Navigator
JavaScript 1.0 Navigator 2.0
JavaScript 1.1 Navigator 3.0
JavaScript 1.2 Navigator 4.0-4.05
JavaScript 1.3 Navigator 4.06-4.7x
JavaScript 1.4  
JavaScript 1.5 Navigator 6.0
Mozilla (open source browser)
JavaScript 1.6 Firefox 1.5, other Mozilla 1.8-based products
JavaScript 1.7 Firefox 2, other Mozilla 1.8.1-based products
JavaScript 1.8 Firefox 3, other Gecko 1.9-based products

Fonte: http://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/About#What_you_should_already_know

Host Application

1.0

2.0

3.0

4.0

5.0

5.1

5.5

5.6

5.8

Microsoft Internet Explorer 3.0

x

 

 

 

 

 

 

 

Microsoft Internet Information Server 3.0

 

x

 

 

 

 

 

 

Microsoft Internet Explorer 4.0

 

 

x

 

 

 

 

 

Microsoft Internet Information Server 4.0

 

 

x

 

 

 

 

 

Microsoft Visual Studio 6.0

 

 

 

x

 

 

 

 

Microsoft Internet Explorer 5.0

 

 

 

 

x

 

 

 

Microsoft Internet Explorer 5.01

 

 

 

 

 

x

 

 

Microsoft Windows 2000

 

 

 

 

 

x

 

 

Microsoft Internet Explorer 5.5

 

 

 

 

 

 

x

 

Microsoft Windows Millennium Edition

 

 

 

 

 

 

x

 

Microsoft Internet Explorer 6.0

 

 

 

 

 

 

 

X

Microsoft Windows XP

 

 

 

 

 

 

 

x

Microsoft Internet Explorer 8.0

x

Fonte: http://msdn.microsoft.com/en-us/library/s4esdbwz(VS.85).aspx

JavaScript JScript ECMAScript
1.0 (Netscape 2.0, Março 1996) 1.0 (IE 3.0 - primeiras versões, Agosto 1996)
1.1 (Netscape 3.0, Agosto 1996) 2.0 (IE 3.0 - versões posteriorer, Janeiro 1997)
1.2 (Netscape 4.0-4.05, Junho 1997)
1.3 (Netscape 4.06-4.7x, Outubro 1998) 3.0 (IE 4.0, Oct 1997) Edição 1 (Junho 1997) / Edição 2 (June 1998)
1.4 (Apenas para Servidor Netscape) 4.0 (Visual Studio 6, não tem versão do IE)
5.0 (IE 5.0, Março 1999)
5.1 (IE 5.01)
1.5 (Netscape 6.0, Nov 2000; depois no Mozilla) 5.5 (IE 5.5, July 2000) Edition 3 (December 1999)
5.6 (IE 6.0, Outubro 2001)
1.6 (Gecko 1.8, Firefox 1.5, Novembro 2005) Edição 3, com melhorias complementares: E4X, Array extras (e.g. Array.prototype.forEach), Array and String generics (New in JavaScript 1.6)
1.7 (Gecko 1.8.1, Firefox 2, October 2006) Edição 3 mais melhorias do 1.6 e generators no estilo do Python, array comprehensions ([a*a for (a in iter)]), escopo de bloco com let, destructing assigments (var [a,b]=[1,2]) (New in JavaScript 1.7)
1.8 (Gecko 1.9, Firefox 3, June 2008) Edição 3 mais melhorias do 1.7, mais expression closures (function(x) x * x), generator expressions (New in JavaScript 1.8)
JScript .NET (ASP.NET; sem versão do IE)
JavaScript 2.0 Cancelado!

Fonte: http://en.wikipedia.org/wiki/ECMAScript#Version_correspondence

Versões mais seguras de se trabalhar

Código intrusivo

Código intrusivo

var a = function () { alert("Sou uma funcao!"); };

a();

São protótipos

var flipper = { cor:"azul", rodas:4 };

alert(flipper.cor);

alert(flipper.rodas);