2010-12-13 9 views
0

pas un expert sur js mais cette instruction if me chatouille encore parce que je pense qu'il peut être écrit de manière de manière plus intelligente:Existe-t-il un moyen de simplifier cette javascript if-statement?

if(event.value == "/") 
{ 
    event.value = "/home"; 
} 

Suggestions?

+1

Qu'en est-il de la déclaration que vous n'aimez pas? Je veux dire, comme les déclarations vont, c'est déjà assez court. – Pointy

+0

Je suis venu ici en m'attendant à un problème de logique ... c'est un problème d'espace blanc. –

Répondre

3

Vous pouvez omettre les accolades:

if(event.value == "/") event.value = "/home"; 

Ou une condition:

event.value = event.value == "/" ? "/home" : event.value; 

... mais je ne suis pas sûr non plus de ceux qui est vraiment "meilleur", et vous with statement devrait juste rester loin de.

+0

Rapide comme toujours :) Donc c'est fondamentalement comme PHP je suppose. Y a-t-il un moyen plus court de se référer à event.value 'dans' les parenthèses? Comme: if (event.value == "/") sameval = "/ home"; –

+2

@ soren.qvist - Il y a, la déclaration 'with' que j'ai aimé ci-dessus, mais c'est mal pour quelques raisons - et pas disponible dans tous les navigateurs. –

1
event.value = (event.value == "/") ? "/home" : event.value; 

serait la seule autre option pratique. La version if() est beaucoup plus lisible dans ce cas.

2
if(event.value == "/"){ 
    event.value += "home"; 
} 
+0

Nice un, 1 moins de caractères à taper. :) –

+0

Je sais, non?^_ ^ – Pimgd

1

Il n'y a pas beaucoup plus que vous pouvez faire avec elle vraiment, autre que les suggestions de Nick, mais voici une autre façon de jeter dans le mélange:

event.value += (event.value == "/") ? "home" : ""; 

Une autre, juste pour le plaisir:

event.value = ((function(v){ return v=="/" ? v+'home' : v }(event.value)) 
1

Je ne pense pas qu'il existe un meilleur moyen. Vous pouvez omettre les accolades si votre guide de style de codage vous le permet, mais cela ne fera pas de différence sémantique. Le plus court event.value = (event.value == '/')?'/home':event.value; n'est pas très bon, car il fait une affectation inutile lorsque la valeur diffère de '/'.

0

Vous pouvez le mettre en fonction pour le rendre meilleur.

function GetValue(s1, s2, s3) { 
    return s1 == s2 ? s3 : s1; 
} 

... 

event.value = GetValue(event.value, "/", "/home"); 

IMO est utile uniquement si vous en avez besoin plusieurs fois.

Questions connexes