簡體   English   中英

如何使這個簡單的javascript函數?

[英]How do I make this simple javascript function?

我有三個變量

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)失敗( 很明顯! ),因為參數作為值傳遞。 但是我需要知道有什么方法可以實現此功能嗎? 另外,我已經看到了這個問題 ,所以我知道它們是如何通過的,但是,仍然有什么方法可以使我工作嗎?

您無法在JavaScript中執行此操作。 它沒有按引用傳遞語義。

您可以為此使用一個中間對象,但是這似乎並不是您想要的:

var data = {r1: 12, r2: '', r3: undefined};
function convert(data, field1, field2, field3) {
    // …
}

您可以執行類似的操作,但是很可能您的邏輯存在某些缺陷。

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));

萬一您只想轉換全局變量,只需輸入這些變量的名稱即可:

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);

工作代碼:在您需要的事件上觸發執行函數


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);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM