我有三个变量

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


我需要使用以下三个参数制作一个函数convert()

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)失败(很明显!),因为参数作为值传递。但是我需要知道有什么方法可以实现此功能吗?另外,我已经看过this question,所以我知道它们是如何通过的,但是,仍然有什么方法可以使我工作吗?

最佳答案

您可以执行类似的操作,但是很可能您的逻辑存在某些缺陷。

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函数,并在需要时调用它会更聪明。

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

console.log(convert(r1));

关于javascript - 如何使这个简单的javascript函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16852148/

10-15 00:45
查看更多