[英]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.