2017-05-16 1 views
-1

これは、設定ページのような変更を検出するために呼び出される機能を持っている場合、これは単純なものです。ベストjsのプラクティスフラグを設定する、チェックを上書きする

hasChanged: function(){ 
    flag = true; 
} 

しかし、ユーザーは物事を変えずにこの機能を何度も呼び出すことができます。それは、この関数の呼び出しを防止し、検証することができ、むしろ

hasChanged: function(){ 
    if(!flag) 
     flag = true; 
} 

他のソリューションよりも、常にそれを呼び出す(そして再びブール値を設定)する方が良いでしょう。しかし、とにかく機能と過度のものになるでしょう。

これは本当に簡単なことですが、それについては興味があります。 。 。ドキュメント、リンク、書籍などは、あなたの答えに感謝しています。

おかげで、

+0

意見に基づいているようです。 – Mistalis

+0

'if'チェックにどのような価値があるのか​​分かりません。また、彼らが何かを変えてそれを元に戻すとどうなりますか?まだ旗は本当であるべきですか? –

+0

Mlstalisは、誰かの「パフォーマンス」やコンパイルなどのベストプラクティスになる可能性がありますが、好きかもしれません。 stephen、mi懸念は論理についてではなく、mi懸念はベストプラクティスについてです:)しかし、ありがとう! –

答えて

0

まず、それは副作用を避けるために、グローバル名前空間またはウィンドウオブジェクトである変数を切り替えるには悪い習慣です。あなたが使用している場合>、

hasChanged: function (flag) { 
    return !flag 
} 

か:

ので、代わりに

hasChanged: function() { 
    if (!window.flag) { 
    window.flag = true 
    } 
} 
あなたがすべき

hasChanged: function (flag) { 
    if (!flag) { 
    flag = true 
    } 
    return flag 
} 

第二に、あなたは、簡素化し、に縮小化することができますES2016、1行:

hasChanged: (flag) => !flag 

つまり、flagがfalseの場合、trueを返します。

+0

私はあなたの完全な文脈を質問に感謝しますが、変数の使用法は質問の範囲にはありません。また、varをトグルしていない、何かが起こったときにそれをtrueに設定しています。 値が同じであれば、それを行うより良い方法や良い方法があるかどうかを尋ねて、もう一度設定しないでください。 –

関連する問題