Palavras reservadas do Javascript
Conceito
Muito foi feito em javascript, mas o problema de erros de script serem exibidos apenas na sua execução
ainda pega muita gente e muitas vezes perdemos muito tempo depurando um erro. IDEs inovadoras como o
Visual Studio Community Edition já possuem dentro de si
a sintaxe correta do JavaScript e conseguem detectar erros no momento da escrita do código. Uma mão na roda.
Pena que não são todos editores que tem esse recurso. Aliás o principal empecilho de usar o JavaScript
em sites modernos é a Produtividade, ou seja, o custo de desenvolvimento.
Costumamos escrever muita coisa no JavaScript de acordo com as nossas necessidades e algumas vezes nos
esquecemos que algumas palavras não podem ser usadas porque o JavaScript as usa para finalidade própria.
Por exemplo se você usar uma palavra reservada do javascript como identificador de um item terá um
erro de execução. Lembre-se que erros na estutura da página HTML são ignorados pelo HTML mas erros
de JavaScript aborta tudo que seria feito no código seguinte e nem sempre o erro é visável fora do
depurador do browser.
Palavras reservadas têm um significado específico na linguagem JavaScript, pois fazem parte da sintaxe da
linguagem. Usar uma palavra reservada como nome de variável, por exemplo, causa um erro de compilação
durante o carregamento do script.
Note que pode ser que numa versão do JavaScript a funcionalidade não apresente erro algum mas numa nova versão
do JavaScript ( EcmaScript ) apareça um erro que cancele o script. Se quiser dar uma olhada nas definições
da linguagem visite o site da
Mozzila.Org.
Note que a entidade define o padrão mas os fabricantes do browser que se encarregam de colocar a funcionalidade
no browser. Por isso essa confusão do que funciona e o que não funciona no browser.
Ao escolher identificadores, também é importante evitar palavras que já representem os nomes de objetos ou
funções JavaScript intrínsecas, como String ou parseInt.
Em JavaScript, Você não pode usar as palavras reservadas para nomear variáveis, rótulos ou nomes de funções:
Lista das chaves reservadas do Javascript
abstract |
arguments |
await* |
boolean |
break |
byte |
case |
catch |
char |
class* |
const |
continue |
debugger |
default |
delete |
do |
double |
else |
enum* |
eval |
export* |
extends* |
false |
final |
finally |
float |
for |
function |
goto |
if |
implements |
import* |
in |
instanceof |
int |
interface |
let* |
long |
native |
new |
null |
package |
private |
protected |
public |
return |
short |
static |
super* |
switch |
synchronized |
this |
throw |
throws |
transient |
true |
try |
typeof |
var |
void |
volatile |
while |
with |
yield |
As palavras marcadas com * são novas no ECMAScript 5 e 6.
As seguintes palavras abaixo foram removidas das palavras reservadas do padrão ECMAScript 5/6 ou a palavra foi mantida
mas a funcionalidade completamente alterada:
Palavras reservadas removidas
abstract |
boolean |
byte |
char |
double |
final |
float |
goto |
int |
long |
native |
short |
synchronized |
throws |
transient |
volatile |
Verifique se o seu navegador tem suporte ao ECMAScript 5/6. Muitos tem mas ainda parcial.
Você também deve evitar usar o nome de objetos, propriedades e métodos internos do JavaScript :
JavaScript Objetos, Propriedades e Métodos
Array |
Date |
eval |
function |
hasOwnProperty |
Infinity |
isFinite |
isNaN |
isPrototypeOf |
length |
Math |
NaN |
name |
Number |
Object |
prototype |
String |
toString |
undefined |
valueOf |
JavaScript pode ser usado como a linguagem de programação em muitos aplicativos usando o recurso web-view ou mesmo um
Node-JS.
Você também deve evitar usar o nome dos objetos e propriedades do DOM ( especialmente dos objetos HTML e Window ):
Outras palavras Reservadas
alert |
all |
anchor |
anchors |
area |
assign |
blur |
button |
checkbox |
clearInterval |
clearTimeout |
clientInformation |
close |
closed |
confirm |
constructor |
crypto |
decodeURI |
decodeURIComponent |
defaultStatus |
document |
element |
elements |
embed |
embeds |
encodeURI |
encodeURIComponent |
escape |
event |
fileUpload |
focus |
form |
forms |
frame |
innerHeight |
innerWidth |
layer |
layers |
link |
location |
mimeTypes |
navigate |
navigator |
frames |
frameRate |
hidden |
history |
image |
images |
offscreenBuffering |
open |
opener |
option |
outerHeight |
outerWidth |
packages |
pageXOffset |
pageYOffset |
parent |
parseFloat |
parseInt |
password |
pkcs11 |
plugin |
prompt |
propertyIsEnum |
radio |
reset |
screenX |
screenY |
scroll |
secure |
select |
self |
setInterval |
setTimeout |
status |
submit |
taint |
text |
textarea |
top |
unescape |
untaint |
window |
|
|
|
Além disso, você deve evitar o uso do nome de todos os manipuladores de eventos HTML.
HTML - Manipuladores de Eventos
onblur |
onclick |
onerror |
onfocus |
onkeydown |
onkeypress |
onkeyup |
onmouseover |
onload |
onmouseup |
onmousedown |
onsubmit |
Nem precisamos dizer que as palavras e funções pré-definidas do JavaScript não podem ser usados.
Funções pré-definidas JavaScript
eval() : O método eval() avalia código JavaScript representado como uma string.
uneval() : O método uneval() cria uma representação de string do código-fonte de um Object.
isFinite() : A função global isFinite() determina se o valor passado é um número finito. Se necessário, o parâmetro é primeiro convertido para um número.
isNaN() : A função isNaN() determina se um valor é NaN ou não. Nota: coerção dentro da função isNaN tem regras interessantes; você pode, alternativamente, querer usar Number.isNaN(), como definido no ECMAScript 6, ou você pode usar typeof para determinar se o valor não é um número.
parseFloat() : A função parseFloat() analisa um argumento do tipo string e retorna um número de ponto flutuante.
parseInt(): A função parseInt() analisa um argumento do tipo string e retorna um inteiro da base especificada (base do sistema numérico).
decodeURI() : A função decodeURI() decodifica uma Uniform Resource Identifier (URI) criada anteriormente por encodeURI ou por uma rotina similar.
decodeURIComponent() : O método decodeURIComponent() decodifica um componente Uniform Resource Identifier (URI) criado anteriormente por encodeURIComponent ou por uma rotina similar.
encodeURI() : O método encodeURI() codifica um Uniform Resource Identifier (URI), substituindo cada ocorrência de determinados caracteres por um, dois, três, ou quatro sequências de escape que representa a codificação UTF-8 do caracter (só serão quatro sequências de escape para caracteres compostos de dois caracteres "substitutos").
encodeURIComponent() : O método encodeURIComponent() codifica um componente Uniform Resource Identifier (URI), substituindo cada ocorrência de determinados caracteres por um, dois, três, ou quatro sequências de escape que representa a codificação UTF-8 do caracter (só serão quatro sequências de escape para caracteres compostos de dois caracteres "substitutos").
escape() : O método obsoleto escape() calcula uma nova string na qual certos caracteres foram substituídos por uma sequência de escape hexadecimal. Use encodeURI ou encodeURIComponent em vez disso.
unescape(): O método obsoleto unescape() calcula uma nova string na qual sequências de escape hexadecimais são substituídas pelo caractere que ela representa. As sequências de escape podem ser introduzidas por uma função como escape. Por unescape() estar obsoleto, use decodeURI() ou decodeURIComponent ao invés
Futuro do JavaScript
Seo HTML está em constante evolução, o JavaScript também e visando o futuro há uma lista de palavras reservadas que
serão usadas futuramente. Estas palavras não fazem parte atualmente da linguagem JavaScript, mas não devem ser
usadas porque no futuro o JavaScript pretende usá-las.
Para obter mais informações sobre palavras-chave reservadas futuras no JavaScript, consulte
JavaScript Palavras reservadas futuras.