javascript函数参数作为私有变量

时间:2012-05-10 22:00:09

标签: javascript function variables

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

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);
    }
};

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

2 个答案:

答案 0 :(得分:5)

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

现在,如果您没有使用任何命名参数,并使用arguments代替,那么就会有区别:在代码可读性方面,甚至在性能方面(对于使用arguments)。

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

答案 1 :(得分:0)

是;那很好。