0

javascript ファイルを非同期的にロードします。ファイルには、プラグインのデフォルト内で定義されたこの行が含まれています。一部のページでは正しい戻り値を返しますが、他のページでは同じファイルが「未定義」の値を返します。ポインタはありますか?

login: '<p>Log in with your '+ fnc(code).name +' account</p>'

関数を定義した同じファイルの下部のどこかに:

 function fnc(s){
      if(s =='' || s == 'a'){
        this.name = 'name1';
        this.value = 'value1';
      }else if(s == 'b'){
        this.name = 'name2';
        this.value = 'value2';
      }else{
        this.name = 'name1';
        this.value = 'value1';
       }
      return this;
    }

何らかの理由で、関数は「未定義」を返します

更新:「コード」は、他のファイルに存在するグローバル変数であり、その変数の値に応じて、関数から異なる値を返したい

UPDATE2: 関数から複数の値を返したいので、それを反映するようにコードを更新しました。

4

3 に答える 3

2

その関数の値は、 「厳密モード」が有効かどうかに応じて、または elsethisへの参照になります。windowundefined

関数がそのように記述されることは、実際にはあまり意味がありません。それはちょうどあるべきであるようです:

function fnc(s) {
  return s == '' || s == 'a' ? "name1" : s == "b" ? "name2" : null;
}

fnc(code)次に、「name」プロパティを必要とせずに as を呼び出すだけです。他の誰かが指摘したように、「コード」が空の文字列、「a」、または「b」以外の場合については規定していません。

于 2012-12-28T15:36:39.483 に答える
2

''、'a'、または 'b' 以外の値を fnc に渡していますか? undefined が返されるためです。

于 2012-12-28T15:36:55.893 に答える
2

thisドキュメントウィンドウを参照できます。オブジェクトを作成しない限り、使用しないでくださいthis

function fnc(s){
    var rc = '';    
    if(s =='' || s == 'a'){
        rc = 'name1';
    } else if (s == 'b'){
        rc = 'name2';
    }
    return rc;
}
于 2012-12-28T15:37:11.433 に答える