2011-08-10 9 views
0

この質問はかなり簡単です。私は変数が偽であるかどうかを検出し、それをtrueに設定したいと思っています。これは一般にトグルとして知られています。ここで変数トラフを関数に切り替えます

はそれを次のとおりです。

var hello = false 

function toggleSt(I, E) 
{ 
    if ((I == "activate") && (!E)) 
    { 
      E = !E 
      alert("activated") 
    } 
    else if ((I == "disable") && (E)) 
    { 
       E = !E 
       alert("disabled") 
    } 
} 

toggleSt("activate", hello) 

alert(hello) 

は私がJSFiddle上でコードを貼り付け、

http://jsfiddle.net/kpDSr/

こんにちは、まだ偽です。

+1

'E'は' hello'への参照ではありません**、同じ値しか持たないでしょう。 'E'を変更しても' hello'は変更されません。 –

答えて

1

フェリックスが正しいです。試してください:

var hello = false 

function toggleSt(I) 
{ 
    if ((I == "activate") && (!hello)) 
    { 
      hello = !hello; 
      alert("activated") 
    } 
    else if ((I == "disable") && (hello)) 
    { 
       hello = !hello 
       alert("disabled") 
    } 
} 

toggleSt("activate"); 

alert(hello) 
+0

しかしそれはハードコーディングです!任意の可能な代替? – Implosions

0

関数を呼び出すと、新しいvar Eにhelloが割り当てられます。この関数では、新しいパラメータEがtrue/falseに設定されています。 helloのパラメータを指定せずに関数を呼び出すと、グローバル変数が期待どおりに動作するので、helloを使用します。

var hello = false 

function toggleSt(I) 
{ 
    if ((I == "activate") && (!hello)) 
    { 
      hello = !hello 
      alert("activated") 
    } 
    else if ((I == "disable") && (hello)) 
    { 
       hello = !hello 
       alert("disabled") 
    } 
} 

toggleSt("activate") 

alert(hello) 
関連する問題