JavaScript 函数参数作为私有变量

javascript function arguments as private variables

本文关键字:变量 函数 参数 JavaScript      更新时间:2023-09-26

我记得在某处读到函数参数在函数中变成了私有变量,所以我尝试了这个:

var node = function(nParent,nName,nContent){
    this.init = function(){
        alert(nName+" "+nParent+" "+nContent);
    }
};
var a = new node("A - parent","A - name","A - content");
var b = new node("B - parent","B - name","B - content");
a.init();
b.init();

它会提醒正确传入的参数,所以可以使用这个而不是这样的东西:

var node = function(nParent,nName,nContent){
    var parent = nParent;
    var name = nName;
    var content = nContent;
    this.init = function(){
        alert(name+" "+parent+" "+content);
    }
};
我知道如果我想在将

参数分配给私有变量之前对参数进行任何形式的额外验证检查,我将不得不使用第二个版本,如果参数已经是永远不会去任何地方的私有变量,我只是不想浪费空间,这是合理的做法吗?谢谢

当然没关系。这些参数是实例化的变量,与您设置它们的其他变量没有明显差异。

现在,如果您没有使用任何命名参数,而是使用arguments,那么就会有所不同:代码可读性,均匀性能(使用 arguments 会受到惩罚)。

所有这些的唯一缺点是您的变量定义不会全部位于同一个位置。(假设此函数中将有更多的变量定义和赋值,超出传递的参数。

是的;这完全没问题。