Fantaisie pour les boucles
vous pouvez utiliser la norme pour la boucle de manière non standard
for ( a; b; c )
est essentiellement équivalent à:
a;
while ( b )
{
...
c;
}
Un bon truc consiste donc à écrire votre code avec une while
boucle, puis à le scinder en plusieurs a,b,c
parties for
.
Quelques exemples que j'ai écrits :
for(x=y=n;!z;x--,y++)z=i(x)?x:i(y)?y:0
for(a=b=1;b<n;c=a+b,a=b,b=c);
Enchaîner vos setters
Si vous initialisez ou réinitialisez plusieurs valeurs, enchaînez la valeur à toutes les variables qui en ont besoin:
a=b=1;
Casting implicite
Ne vérifiez pas vos types, utilisez-les tels quels. parseInt()
coûts de 10
caractères. Si vous avez besoin de sortir d'une chaîne, soyez créatif:
a='30';
b='10';
c = a + b; //failure
c = parseInt(a) + parseInt(b) //too long
c = -(-a-b); //try these
c = ~~a+~~b;
c = +a+ +b;
c = a- -b;
Évitez les points-virgules
JavaScript a une insertion automatique de point-virgule. Utilisez-le souvent et bien.
Une ligne
Économisez sur les crochets en plaçant autant que possible en lignes simples ou paramètres:
a( realParam1, realParam2, fizz='buzz' )
Opérateurs d'incrémentation / décrémentation
a = a - 1;
foo(a);
et
foo(a);
a = a - 1;
peut facilement être réécrit comme
foo(--a);
et
foo(a--);
respectivement.
Utiliser this
ou self
au lieu de window
dans un contexte global
Économies explicites de 2 caractères.
Utiliser la notation entre crochets pour l'accès aux propriétés répétées
Il s’agit bien d’un équilibre entre la longueur du nom de la propriété et le nombre d’accès. Au lieu d'appeler a.longFunctionName()
deux fois avec la notation par points, il est plus court d'enregistrer le nom et d'appeler la fonction via la notation entre crochets:
a.longFunctionName(b)
a.longFunctionName(c)
//42
-contre-
a[f='longFunctionName'](b)
a[f](c)
//34
Ceci est particulièrement efficace avec des fonctions telles document.getElementById
que celles pouvant être réduites à d[e]
.
Remarque:
Avec la notation entre crochets, le coût est 6 + name.length
la première fois en caractères. Chaque accès ultérieur a un coût de3
caractères.
Pour la notation par points, tous les accès coûtent name.length + 1
(+1 pour les .
) caractères.
Utilisez cette méthode si 6 + name.length + (3 * (accesses - 1)) < accesses * (name.length + 1)
.
len = longueur du nom de la propriété
i = accès minimum à exploiter
len | i
========
1 | ∞
2 | ∞
3 | 7
4 | 4
5 | 3
6 | 3
7 | 3
8+ | 2
Le nombre d'accès peut également couvrir plusieurs objets. Si vous accédez au moins .length
4 fois sur des tableaux différents, vous pouvez utiliser la même variable contenant la chaîne 'length'
.
var
? Et le code de golf JavaScript doit-il être une fonction ou produire quelque chose directement? Honnêtement, je pense que cela peut faire beaucoup de différence.