4

関数がエラー コードと文字列値の両方を返すようにしたいので、return を使用してエラー コードを返し、パラメーターを使用して文字列値を返すように計画します。しかし、うまくいきません。関数パラメーターから値を返すことができないようです。関数パラメータからそれを返す方法はありますか?

以下はサンプルコードです。sayHello のパラメーターから retVal を取得したいと考えています。

function sayHello(name, retVal) {
    retVal = "hello " + name;
    return 1;
}
4

3 に答える 3

11

おそらくこの方法でオブジェクトを返すことができます。

function sayHello(name) {

    retVal = "hello " + name;
    return {code: 1, message: retVal};
}

//And while calling
var returnVal= sayHello("something");
var code = returnVal.code;
var msg= returnVal.message;

retVal が外部で使用できない理由は、関数内のスコープで変数を巻き上げているためです。ただし、引数として渡さないことで回避することもできます。

var retVal; //Define it in an outer scope.
function sayHello(name) {
    retVal = "hello " + name;
    return 1;
}
var returnVal= sayHello("something");
alert(returnVal);
alert(retVal); //Now get it here.
于 2013-07-03T01:49:22.673 に答える
2

PSL のソリューションが最適ですが、引数を介してそれを返す方法を本当に知りたい場合は、オブジェクトを使用するしかありません。オブジェクトはコピーではなく参照によって渡されるためです (配列はオブジェクトであることに注意してください)。

var hello = [];
sayHello("Paul", hello); // "hello[0] === "hello Paul"

function sayHello(name, retVal) {
    retVal[0] = "hello " + name;
    return 1;
}
于 2013-07-03T01:54:50.900 に答える