您的位置:首页 > Web前端 > JavaScript

JavaScript 模仿块级作用域和私有变量

2011-11-17 21:15 387 查看
这是再次看《JS高级程序设计 》做的笔记,加深印象。也供大家共同学习

js中没有块级作用域的概念。看下面例子:

function outputName(count){
for(var =0;i<count;i++){
alert(i);
}
alert(i);//count
}


在java,c++中,变量i只会在for循环中有定义,循环一旦结束,变量就会被销毁。可是在js中,变量i是定义在outputNumber()的活动对象中的,因此从它有定义开始,就可以在函数内部随处访问它。

匿名函数可以用来模仿块级作用域并避免这个问题。作用块级作用域(通常称为私有作用域)的匿名函数的语法如下所示:

(functio(){
//这里时块级作用域
})();


以上代码定义并立即调用一个匿名函数。

无论在什么地方,只要临时需要一些变量,就可以使用私有作用域。例如:

function outputNumber(count){
(function(){
for(var i=0;i<count;i++)
alert(i);
})();
alert(i);// i is not defined
}


私有变量:

function Person(name){//name is the private variant
//Here is the privileged method which used to visit
// the privated variant
this.getName=function(){
return name;
};
this.setName=function(value){
name=value;
};
}
var person=new Person("hxj");
alert(person.getName());  //"HXJ"
person.setName("YJH");
alert(person.getName()); //"YJH"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: