0

JavaScript中是否可以使用函数参数定义变量名称?JavaScript:使用函数参数定义变量名称

这里是my jsFiddle。在下面的例子中,我想varB当通过makeNull(varName)传递到被定义为null

var varA = undefined; 
if (varA == undefined) { 
    varA = null; 
} 
var varB = undefined; 

makeNull(varB); 

function makeNull(varName) { 
    if (varName == undefined) { 
    varName = null; 
    } 
} 

alert (varA + ' | ' + varB); 

+0

您似乎试图通过更改另一更高范围内的绑定来破坏封装。为什么?即使有解决方案,这也不是很好的软件实践。 –

+0

我同意Francis,但创建函数来修改对象或变量没有任何问题。你应该明确你传递的内容以及你回报的内容。也许这样? http://jsfiddle.net/zVM9M/2/ –

+0

@FrancisAvila我通过jQuery获得了多个复选框的值。被检查的= 1不被检查的是'未定义的',但我需要它们为'null'。例如:checkbox1 = 1,checkbox2 = 1,checkbox3 = null。 –

回答

1

JavaScript不提供 “通过引用调用” 参数。当你调用一个函数时,它会接收参数表达式的值,而不是对表达式中变量的引用。所以它不能修改这些变量的绑定。

如果你想做这样的事情,你可以使用容器和标签,例如,

function makeNull(obj, label) { 
    if (obj[label] === undefined) { 
     obj[label] = null; 
    } 
} 
var varB = { abc: undefined } 
makeNull(varB, 'abc'); 
+0

我想我在这里完全失去了它。当然,一个变量作为参数传递任何变量equals,而不是变量名。每个人的答案都非常具有教育意义,我非常感谢他们,但也许我应该删除这个问题,因为我认为这可能很混乱。感谢您的回答! –

2

如果你试图定义一个函数参数变量,那么你要么需要使用数组或对象。

+0

你能解释一下吗? –

-1

您可以将一个变量(定义为'undefined')传递给函数并设置其值。

http://jsfiddle.net/AwnVN/

+1

将未定义的变量传递给函数没有任何问题。如果你没有进行防守编码,它可能会破坏你的弱代码,但这不是JavaScript问题 - 这是你的问题。检查这个小提琴的证明:http://jsfiddle.net/8sUhe/ –

+0

哦,这使得我们将一个变量定义为undefined时有所不同。在这种情况下没有JS错误。凉。 – Dev

+0

您必须将所有参数传递给函数。如果你不这样做,他们会被隐式转向未定义。但是显式传递'undefined'没什么问题。 – Zaffy

相关问题