Depuis ECMAScript 2015, JavaScript contient 33 mots clés réservés , tels que break
, const
etnew
, ainsi que 10 futurs mots clés réservés , tels que let
et await
.
Votre tâche consiste à enchaîner le plus grand nombre de mots-clés réservés 1 distincts et consécutifs 2 lors de l'écriture du code JavaScript fonctionnel 3 .
- Mots clés réservés consécutifs - mots clés réservés qui ne sont séparés que par des espaces et / ou des parenthèses et / ou des accolades.
- Mots-clés réservés - tous les mots-clés réservés ou futurs réservés à partir de ECMAScript 2015 . Les mots clés réservés de normes plus anciennes sont exclus, une liste complète des mots clés autorisés est donnée ci-dessous.
- Code fonctionnel - votre code doit être exécuté (indiquez votre runtime, si nécessaire), éventuellement interrompu et ne pas générer d'erreurs d'exécution.
Si votre code nécessite une exécution spécifique, les mots-clés réservés utilisés ne doivent pas être no-ops dans l'environnement donné.
Liste des mots-clés réservés
Scoring & exemples
Votre score sera égal au plus grand nombre de mots-clés réservés distincts et consécutifs.
Dans le cas de scores égaux, le code source le plus court en octets gagne. Les sections et les chaînes commentées ne comptent pas pour les mots clés réservés, mais pour le nombre d'octets.
// 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;
Les failles standard s'appliquent.
Réponses:
43 mots, 603 octets
Uhm, est-ce une faille? Je ne sais pas du tout comment c'est légal JS, mais ça marche et ça utilise tous les mots-clés.
la source
-1
,i+1
,i-1
ci - dessus~0
,-~i
,~-i
quand je peux, juste parce qu'il est plus clair à lire pour ceux qui ne sont pas familiers avec le code-golf et~
encore. Bien que je vais bien sûr toujours utiliseri+~j
eti-~j
jouer au golf cet octet unique dei-j-1
eti+j+1
. ;)if(this)return void typeof function(){} else debugger
n’est pas difficile à établir, mais après cela, il devient très vite moche. Et oui, cela transforme totalement les mots-clés en identifiants - mais pour certains d'entre eux, vous devez le faire pour pouvoir les utiliser (par exempleenum
). Je viens de le prendre à l'extrême, mais n'est-ce pas ce qu'est le code golf? : Pobj["break"] = function (){}
etc.37 mots
Mots-clés non utilisés:
case
a besoin:
const
a besoin=
export
nécessite un mode strictimport
nécessite un mode strictsuper
a besoinconstructor
la source
1 + 2
.1 + 2
. La valeur complète de ce code est la réponse à la question ultime de la vie, de l'univers et de tout. C'est complexe . :)43 mots,
302299 octetsla source
enum
.212426 mots, 185 octets+
12 mots grâce à Arnauld et +1 à 12Me21!En supposant que j'ai compris le défi, cela compte pour 24 mots. Les mots sans parenthèses, crochets et espaces:
24 mots, 177 octets
Sans "true" et "false", qui ne sont apparemment pas des mots clés selon la question.
Mots:
la source
case ... :
oudefault:
à la fin (car ce:
n'est pas permis entre les mots-clés)for(let _;0;);
+2 mots (mais tu ne peuxcase
plus en utiliser ).switch({}){case{}:{}}
=>switch({}){case{}:;}
?;
3839les mots de "super" à "const"
Version golfée:
la source
Uncaught SyntaxError: Unexpected token delete
lorsque j'essaie d'exécuter votre réponse dans ma console Javascript sur Google Chrome. Comment puis-je tester si votre solution est valide?SyntaxError: yield expression is only valid in generators
21 mots
(pas sûr de
let
etawait
)la source
,
=
et;
ne sont pas autorisés en tant que séparateurs.43 mots, 300 octets
Plus lisiblement:
Je devais utiliser le "mot réservé comme nom de méthode" pour traiter
case
(depuis que j'avais déjà utilisédefault
avec monswtich
),export
etimport
(puisque le mode de module est toujours strict, ce qui disqualifiewith
)super
(puisqu'il doit être suivi d'un accès à la propriété ou placé dans unconstructor
fonction), etenum
(qui ne peut jamais être utilisé du tout, étant un mot réservé sans utilisation grammaticalement valide)la source
super
peuvent apparaître au début sans être141516 Mots sans crochets ni nouvelle ligneMerci Bergi pour +1
la source
yield
?Uncaught SyntaxError: Unexpected token new
quand je colle dans ma console javascriptfunction
parfunction*
, il sera donc reconnu comme générateur.28 mots sans crochets, 234 octets
Mettre les noms d’identifiant comme noms de définition de méthode était trop évident ( pour moi du moins ), alors je cherchais la séquence la plus longue et distincte et consécutive de mots réservés et d'espaces dans un extrait de code.
J'espère que le code mort après un
return
ne compte pas comme une échappatoire, mais le code est toujours exécutable si les identifiants utilisés sont déclarés.Cela exploite le fait que certains des futurs mots clés réservés ne sont considérés comme invalides qu'en mode strict de ES5.1 (apparemment, les moteurs ne se souciant pas de bloquer tous les mots réservés futurs de ES3, il y avait donc trop de code qui les utilisait sur le Web. )
De même, les jetons
async
et lesawait
clés introduits dans ES8 ne sont considérés comme des mots-clés qu'en mode strict.la source
break
Et peutcontinue
être là?Uncaught SyntaxError: Undefined label 'implements'
, votre réponse nécessite-t-elle un runtime spécifique?