Ab ECMAScript 2015 ist Javascript 33 reservierte Schlüsselwörter , wie break
, const
und new
, sowie 10 Zukunft reservierte Schlüsselwörter , wie let
und await
.
Ihre Aufgabe ist es, die größte Anzahl von aufeinanderfolgenden 1 verschiedenen reservierten Schlüsselwörtern 2 zu verketten, während Sie funktionalen JavaScript-Code 3 schreiben .
- Aufeinanderfolgende reservierte Schlüsselwörter - reservierte Schlüsselwörter, die nur durch Leerzeichen und / oder Klammern und / oder geschweifte Klammern getrennt sind.
- Reservierte Schlüsselwörter - alle reservierten oder zukünftigen reservierten Schlüsselwörter ab ECMAScript 2015 . Reservierte Schlüsselwörter aus älteren Standards sind ausgeschlossen. Eine vollständige Liste der zulässigen Schlüsselwörter finden Sie weiter unten.
- Funktionscode - Ihr Code sollte ausgeführt werden (geben Sie ggf. Ihre Laufzeit an), möglicherweise angehalten werden und keine Laufzeitfehler verursachen.
Wenn Ihr Code eine bestimmte Laufzeit benötigt, dürfen die verwendeten reservierten Schlüsselwörter in der angegebenen Umgebung keine No-Ops sein.
Liste der reservierten Schlüsselwörter
Wertung & Beispiele
Ihre Punktzahl entspricht der größten Anzahl aufeinanderfolgender reservierter Keywords.
Bei gleicher Punktzahl gewinnt der kürzeste Quellcode in Bytes. Kommentierte Abschnitte und Zeichenfolgen werden nicht für reservierte Schlüsselwörter, sondern für die Bytezahl gezählt.
// 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;
Es gelten Standardlücken .
Antworten:
43 Wörter, 603 Bytes
Ähm, ist das eine Lücke? Ich habe keine Ahnung, wie zum Teufel das legal ist JS, aber es funktioniert und es verwendet jedes einzelne Keyword.
quelle
-1
,i+1
,i-1
oben~0
,-~i
,~-i
wenn ich kann, nur weil es klarer ist für diejenigen zu lesen , die mit Code-Golf nicht allzu vertraut sind und~
noch. Obwohl ich natürlich immeri+~j
undi-~j
zum Golfen dieses einzelnen Bytes voni-j-1
und verwenden werdei+j+1
. ;)if(this)return void typeof function(){} else debugger
ist nicht schwer zu finden, aber danach wird es schnell hässlich. Und ja, das macht Schlüsselwörter zu Identifikatoren - aber für einige von ihnen muss man sie verwenden , um sie verwenden zu können (zenum
. B. ). Ich habe es nur bis zum Äußersten genommen, aber ist das nicht alles, worum es beim Code-Golfen geht? : Pobj["break"] = function (){}
usw.37 Wörter
Nicht verwendete Schlüsselwörter:
case
erfordert:
const
erfordert=
export
erfordert strengen Modusimport
erfordert strengen Modussuper
erfordertconstructor
quelle
1 + 2
.1 + 2
. Der vollständige Wert dieses Codes ist die Antwort auf die ultimative Frage des Lebens, des Universums und alles. Das ist komplex . :)43 Wörter,
302299 Bytesquelle
enum
.212426 Wörter, 185 Bytes+
12 Wörter danke an Arnauld und +1 bis 12Me21!Vorausgesetzt, ich habe die Herausforderung verstanden, ergibt dies 24 Wörter. Die Wörter ohne Klammern, Klammern und Leerzeichen:
24 Wörter, 177 Bytes
Ohne "wahr" und "falsch", die laut Fragestellung anscheinend keine Schlagworte sind.
Wörter:
quelle
case ... :
oderdefault:
am Ende setzen (da:
zwischen Schlüsselwörtern nicht erlaubt ist)for(let _;0;);
für +2 Wörter enden (aber Sie können nichtcase
mehr verwenden).switch({}){case{}:{}}
=>switch({}){case{}:;}
? Ich weiß nicht, ob;
es manchmal notwendig ist3839Wörter von "super" bis "const"
Golf Version:
quelle
Uncaught SyntaxError: Unexpected token delete
wenn ich versuche , deine Antwort in meiner Javascript - Konsole auf Google Chrome zu laufen, Wie kann ich testen , ob Ihre Lösung gültig ist?SyntaxError: yield expression is only valid in generators
21 Wörter
(nicht sicher über
let
undawait
)quelle
,
=
und;
sind nicht als Trennzeichen zulässig.43 Wörter, 300 Bytes
Besser lesbar:
Ich musste das "reservierte Wort als Methodenname" verwenden, um damit umzugehen
case
(da ichdefault
mit meinem schon benutzt hatteswtich
),export
undimport
(da der Modulmodus immer streng ist, was disqualifiziertwith
)super
(da es von einem Eigenschaftszugriff gefolgt oder in eineconstructor
Funktion eingefügt werden muss) undenum
(was niemals verwendet werden kann, da es sich um ein reserviertes Wort ohne grammatikalisch gültige Verwendung handelt)quelle
super
können am Anfang ohne Namen erscheinen, aber zu teuer141516 Wörter ohne Klammern oder ZeilenvorschubDanke Bergi für +1
quelle
yield
?Uncaught SyntaxError: Unexpected token new
wenn ich in meine Javascript-Konsolefunction
mitfunction*
, so wird er als Generator erkannt werden.28 Wörter ohne Klammern, 234 Bytes
Das Eingeben von Bezeichnernamen als Methodendefinitionsnamen war zu offensichtlich ( zumindest für mich ), daher suchte ich nach der längsten fortlaufenden eindeutigen Folge von reservierten Wörtern und Leerzeichen in einem Code-Snippet.
Ich hoffe, dass toter Code nach a
return
nicht als Schlupfloch zählt, aber der Code ist noch lauffähig, wenn die verwendeten Bezeichner deklariert werden.Dies nutzt die Tatsache aus, dass einige der zukünftigen reservierten Schlüsselwörter nur im strikten Modus von ES5.1 als ungültig angesehen werden (anscheinend, weil die Suchmaschinen nicht alle zukünftigen reservierten Wörter von ES3 blockierten, sodass es im Web zu viel Code gab, der sie verwendet ).
Ebenso werden die in ES8 eingeführten Token
async
undawait
nur im strikten Modus als Schlüsselwörter betrachtet.quelle
break
undcontinue
da sein?Uncaught SyntaxError: Undefined label 'implements'
, erhalte ich , erfordert Ihre Antwort eine bestimmte Laufzeit?