1

私は3つの変数を持っています

var r1 = 12;
var r2 = '';
var r3;

convert()次のように、3 つのパラメーターを持つ関数を作成する必要があります。

function convert(arg1, arg2, arg3) {
    // function body here
}

このコードを実行した後

convert(r1, r2, r3)
console.log(r1, r2, r3)

出力が得られるはずです:

r2, "empty string", "undefined value"

つまり、r1、r2、r3 の値を上記の値に変更する必要があります。

私が試したコード:

function convert(arg1, arg2, arg3) {
  if (arg2 === '') {
    arg2 = "empty string";
  }
  if (arg3 === undefined) {
    arg3 = "undefined value";
  }
}

引数が値として渡されるため、呼び出しconvert(r1, r2, r3)は失敗します(明らかに! )。しかし、この関数を作成する方法はありますか? また、私はこの質問を見たので、それらがどのように渡されるかは知っていますが、それでも、これを機能させる方法はありますか?

4

4 に答える 4

0

グローバル変数のみを変換したいというまれなイベントでは、それらの変数の名前を渡すことができます:

function convert(arg1, arg2, arg3) {
  if (window[arg2] === '') {
    window[arg2] = "empty string";
  }
  if (window[arg3] === undefined) {
    window[arg3] = "undefined value";
  }
}

var r1 = 12;
var r2 = '';
var r3;
convert('r1', 'r2', 'r3');
console.log(r1, r2, r3);
于 2013-05-31T11:01:32.310 に答える
0

このようなことを行うこともできますが、ほとんどの場合、ロジックに何か問題があります。

function convert(arr) {
    for (var i = 0, l = arr.length; i < l; i++) {
        // do your stuff here on arr[i]
    }
    return arr;
}

var a = convert([r1, r2, r3]);
//a now holds the right values, do whatever you want with them
//you can even load them back to the variables if that's what you really want
//r1 = a[0]; etc.

これらの新しい値をどこで使用したいのか、これを行う理由はわかりませんが、convert 関数を 1 つの値に対してのみ記述し、必要なときに呼び出す方が賢明です。

function convert(val) {
    if (val === '') {
        return 'empty string';
    }
    if (typeof val === 'undefined') {
        return 'undefined value';
    }
    return val;
}

console.log(convert(r1));
于 2013-05-31T07:41:10.153 に答える
-1

作業コード: 必要なイベントで実行関数を起動します


function execute(){
    var r1 = 12;
    var r2 = '';
    var r3;
    convert(r1,r2,r3);
}

function convert(arg1, arg2, arg3) {
  if (arg2 === '') {
    arg2 = "empty string";
  }
  if (arg3 === undefined) {
    arg3 = "undefined value";
  }

  console.log(arg1,arg2,arg3);
//    console.log(arg2);
  //    console.log(arg3);

}
于 2013-05-31T07:54:56.820 に答える