2010-12-13 12 views
0

ないJSの専門家が、私はそれが邪魔により巧妙なファッションを書き込むことができます疑いがあるため、このif文はまだ私をくすぐる:このJavaScriptのif文を単純化する方法はありますか?

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

提案を?

+1

あなたが好きではないと言うのはどういう意味ですか?私は、文が進むにつれて、すでにかなり短いことを意味します。 – Pointy

+0

私は論理的な問題を期待してここに来ました...これはホワイトスペースの問題です。 –

答えて

3

あなたは括弧を省略できます。

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

または条件:

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

を...しかし、私はそれらのいずれかが実際に "より良い" ではわからない、とwith statementあなたはただ離れていなければならない。

+0

いつものように速い:)それは基本的に私が推測するようなPHPです。大括弧の中の 'event.value'を参照する短い方法はありますか?次のようにします。if(event.value == "/")sameval = "/ home"; –

+2

@ soren.qvist - 上記で好きだった 'with'ステートメントがありますが、それはいくつかの理由で悪です。すべてのブラウザで利用できるわけではありません。 –

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

は、唯一の他の実用的なオプションです。この場合、if()バージョンははるかに読みやすくなります。

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

いいえ、1文字少なくタイプします。 :) –

+0

私は知っています、そうですか?^_ ^ – Pimgd

1

ニックの提案よりも、あなたが本当にそれを行うことができますはるかに他ありませんが、ここではミックスにスローする別の方法です:

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

もう一つは、楽しみのためだけに、:

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

私は良い方法はないと思います。あなたのコーディングスタイルのガイドが許せば、中括弧を省略することができますが、意味的に違いはありません。 event.value = (event.value == '/')?'/home':event.value;のほうが、値が'/'と異なるときに無駄な割り当てが行われるため、短くなればなりません。

0

これを機能させると、より見た目がよくなります。

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

... 

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

IMOは複数回必要な場合にのみ便利です。

関連する問題