Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:使用函数参数定义变量名_Javascript_Function_Variables_Naming Conventions_Function Parameter - Fatal编程技术网

JavaScript:使用函数参数定义变量名

JavaScript:使用函数参数定义变量名,javascript,function,variables,naming-conventions,function-parameter,Javascript,Function,Variables,Naming Conventions,Function Parameter,在JavaScript中是否可以用函数参数定义变量名? 这里是。在下面的示例中,我希望通过makeNull(varName)将varB定义为null: ​ 如果您试图使用函数参数定义变量,则您可能需要使用数组或对象。您可以将变量(定义为“未定义”)传递给函数并设置其值 JavaScript不提供“引用调用”参数。调用函数时,它接收参数表达式的值,而不是表达式中变量的引用。所以它不能修改这些变量的绑定 如果你想这样做,你可以使用容器和标签,例如 function makeNull(obj, lab

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

这里是。在下面的示例中,我希望通过
makeNull(varName)
varB
定义为
null


如果您试图使用函数参数定义变量,则您可能需要使用数组或对象。

您可以将变量(定义为“未定义”)传递给函数并设置其值


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

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

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

您似乎试图通过在另一个更高的范围内更改绑定来打破封装。为什么?即使有解决方案,这也不是好的软件实践。我同意Francis的观点,但创建函数来修改对象或变量并没有错。你应该明确你传递了什么,你返回了什么。也许是这样的@FrancisAvila我通过jQuery获得多个复选框的值。选中的=1未选中的是
未定义的
,但我需要它们为
null
。例如:checkbox1=1、checkbox2=1、checkbox3=null。如果将所有复选框表示为一个数组,则可以将整个数组传递给makeNull函数,它可以将未定义的元素设置为null。将未定义的变量传递给函数没有错。如果你没有防御性地编写代码,它可能会破坏你脆弱的代码,但这不是JavaScript的问题——这是你的问题。看看这把小提琴,看看有没有证据:哦,当我们把一个变量定义为未定义变量时,情况就不同了。在这种情况下,没有JS错误。酷。你必须把所有参数传递给函数。如果不这样做,它们将被隐式地转换为未定义。但是显式地传递未定义的
并没有什么错。我想我在这里完全失去了它。当然,变量作为参数传递的是变量等于什么,而不是变量名。每个人的回答都很有教育意义,我真的很感激他们,但也许我应该删除这个问题,因为我认为这可能是相当混乱的。谢谢你的回答!
function makeNull(obj, label) {
  if (obj[label] === undefined) {
      obj[label] = null;
  }
}
var varB = { abc: undefined }
makeNull(varB, 'abc');