No ECMAScript 2015, o JavaScript possui 33 palavras-chave reservadas , como break
, const
e new
, além de 10 futuras palavras-chave reservadas , como let
e await
.
Sua tarefa é encadear o maior número de 1 palavras-chave reservadas distintas consecutivas 2 ao escrever o código JavaScript funcional 3 .
- Palavras-chave reservadas consecutivas - palavras-chave reservadas que são separadas apenas por espaços em branco e / ou parênteses e / ou chaves.
- Palavras-chave reservadas - quaisquer palavras-chave reservadas ou futuras reservadas a partir do ECMAScript 2015 . Palavras-chave reservadas de padrões mais antigos são excluídas. Uma lista completa de palavras-chave permitidas é fornecida abaixo.
- Código funcional - seu código deve ser executado (indicar seu tempo de execução, se necessário), eventualmente parar e não gerar erros de tempo de execução.
Se o seu código precisar de um tempo de execução específico, as palavras-chave reservadas usadas não deverão ser não operacionais no ambiente especificado.
Lista de palavras-chave reservadas
Pontuação e exemplos
Sua pontuação será igual ao maior número de palavras-chave reservadas distintas consecutivas.
No caso de pontuações iguais, o menor código-fonte em bytes vence. Seções e seqüências comentadas não contam para palavras-chave reservadas, mas para contagem de bytes.
// score: 3
if (true) 0; else throw function() {}
^------------------^
// score: 2
let foo = typeof typeof void typeof void 0;
^---------^
// score: 0
/* typeof default debugger */
// score: 0, doesn't halt or debugger is no-op, depending on the environment
debugger;
Aplicam-se brechas padrão .
Respostas:
43 palavras, 603 bytes
Uhm, isso é uma brecha? Eu não tenho idéia de como diabos isso é JS legal, mas funciona e usa todas as palavras-chave.
fonte
-1
,i+1
,i-1
acima~0
,-~i
,~-i
quando eu posso, só porque é mais clara para ler para aqueles que não estão muito familiarizados com o código-golfe e~
ainda. Embora, é claro, eu sempre usei+~j
ei-~j
jogue esse byte único dei-j-1
ei+j+1
. ;)if(this)return void typeof function(){} else debugger
não é difícil de conseguir, mas depois disso fica feio e rápido. E sim, isso transforma totalmente palavras-chave em identificadores - mas para alguns deles você precisa fazê-lo (por exemploenum
). Eu levei isso ao extremo, mas não é disso que se trata o código do golfe? : Pobj["break"] = function (){}
etc.37 palavras
Palavras-chave não utilizadas:
case
requer:
const
requer=
export
requer modo estritoimport
requer modo estritosuper
requerconstructor
fonte
1 + 2
.1 + 2
. O valor completo desse código é a resposta para a questão final da vida, do universo e de tudo. Isso é complexo . :)43 palavras,
302299 bytesfonte
enum
.212426 palavras, 185 bytes+
12 palavras graças a Arnauld e +1 a 12Me21!Assumindo que entendi o desafio, isso marca 24 palavras. As palavras sem parênteses, colchetes e espaço em branco:
24 palavras, 177 bytes
Sem "verdadeiro" e "falso", que aparentemente não são palavras-chave de acordo com a pergunta.
Palavras:
fonte
case ... :
oudefault:
no final (uma vez que:
não é permitido entre palavras-chave)for(let _;0;);
+2 palavras (mas não podecase
mais usar ).switch({}){case{}:{}}
=>switch({}){case{}:;}
? Não sei se;
é por vezes necessário3839palavras de "super" para "const"
Versão Golfed:
fonte
Uncaught SyntaxError: Unexpected token delete
quando tento executar sua resposta no meu console Javascript no Google Chrome. Como posso testar se sua solução é válida?SyntaxError: yield expression is only valid in generators
21 palavras
(não tenho certeza
let
eawait
)fonte
,
=
e;
não são permitidos como separadores.43 palavras, 300 bytes
Mais facilmente:
Eu tive que usar a "palavra reservada como nome do método" para lidar com
case
(já que eu já tinha usadodefault
com o meuswtich
),export
eimport
(como o modo de módulo é sempre rigoroso, o que desqualificawith
)super
(já que deve ser seguido por um acesso à propriedade ou colocado em umaconstructor
função), eenum
(que nunca pode ser usada, sendo uma palavra reservada sem uso gramaticalmente válido)fonte
super
pode aparecer no início sem nome, mas muito caro141516 Palavras sem colchetes ou nova linhaObrigado Bergi por +1
fonte
yield
?Uncaught SyntaxError: Unexpected token new
quando eu colar dentro da minha consola javascriptfunction
porfunction*
, para que seja reconhecido como um gerador.28 palavras sem colchetes, 234 bytes
Colocar nomes de identificadores como nomes de definição de método era muito óbvio ( pelo menos para mim ), então eu estava procurando a sequência distinta consecutiva mais longa de palavras reservadas e espaços em branco em um trecho de código.
Espero que o código morto após a
return
não conte como brecha, mas o código ainda possa ser executado se os identificadores usados forem declarados.Isso explora o fato de que algumas das futuras palavras-chave reservadas são consideradas inválidas apenas no modo estrito do ES5.1 (aparentemente porque os mecanismos não se deram ao trabalho de bloquear todas as futuras palavras reservadas do ES3, portanto havia muito código usando-as na Web) )
Da mesma forma, os tokens
async
eawait
introduzidos no ES8 são considerados apenas palavras-chave no modo estrito.fonte
break
econtinue
está aí?Uncaught SyntaxError: Undefined label 'implements'
, sua resposta requer um tempo de execução específico?