javascript函数参数作为私有变量

Dan*_*son 0 javascript variables function

我记得在某个地方读过函数参数变成函数内的私有变量所以我试过这个:

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();
Run Code Online (Sandbox Code Playgroud)

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

var node = function(nParent,nName,nContent){
    var parent = nParent;
    var name = nName;
    var content = nContent;
    this.init = function(){
        alert(name+" "+parent+" "+content);
    }
};
Run Code Online (Sandbox Code Playgroud)

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

Pau*_*uno 5

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

现在,如果你没有使用任何命名参数,arguments而是使用它,那么就会有区别:代码可读性,甚至性能(使用时会受到惩罚arguments).

所有这一切的唯一缺点是你的变量定义不会都在同一个地方.(假设在此函数中将有更多变量定义和赋值,超出了传递的参数.)