0

ときどき JavaScript を使用して、別の言語で慣れていたパターンを使用するようにしています。関数の結果が操作の成功に関するものであり、パラメーターの 1 つが実際の戻り値への参照である場合です。

JavaScript には参照渡しがないことを知っているので、唯一の方法はオブジェクト (配列を含む) を使用することです。だから何か

function getSomething(res)
{
  if (....)
  {
    res["value"] = 123;
    return true;
  } else
    return false;
}

しかし、これはいくつかの不都合につながります。そのうちの 1 つは、実際にこの関数を使用するときです。慣例を忘れてはならないので、これに対処する私の自然な方法は次のとおりです。

  var value = {};  
  if (getSomething(value))
  {
    if (value == 123)
    {
    }
  }  

私が覚えておくべき正しい方法は

...
if (value["value"] == 123)
...

また、{} で値を初期化するのを忘れると、別のエラーが発生します。

ということで、もしかしたら言語を混ぜて使う方への質問かもしれません。そのようなリターンパターンに便利だと思われる規則は何ですか?

UPDATE : C プログラムに表示される実際のコード フラグメントの例として

if (getSomethingA(&res1) && getSomethingB(&res2) && getSomethingC(&res3)) {
     ...   
     v = res1*res2*res3;
     ...
} 

「常に規則を覚えるのはそれほど簡単ではない」または行数が多すぎることなく、JavaScriptでこのようなものを実装する方法がわかりません。

4

2 に答える 2

2

応答オブジェクトを作成して、ステータスと実際の応答値用のフィールドをいくつか用意してみませんか。false で false を返し、true で配列を返すのではなく、毎回そのオブジェクトを返します。

成功のために

 response=new Object();
 response.status=true;
 response.value="Response string";
 return response;

失敗した場合

response=new Object();
 response.status=false;
 response.value="Response string";
 return response;

回避するために代替構文を使用することもできますextra line

response={status:true,value:"Response string"};
于 2013-02-01T09:09:12.500 に答える