1 / 14
文档名称:

js变量作用域.doc

格式:doc   大小:30KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

js变量作用域.doc

上传人:文库旗舰店 2019/10/11 文件大小:30 KB

下载得到文件列表

js变量作用域.doc

相关文档

文档介绍

文档介绍:每一种语言都有变量的概念,变量是用来存储信息的一个元素。比如下面这个函数:1functionStudent(name,age,from)2{=name;=age;=from;=function()7{8return"myinformationisname:"++",age:"++",from:"+;9}10}Student类有三个变量,分别为name(名字),age(年龄),from(籍贯),这三个变量构成了描述一个对象的信息。当然,这里还有一个方法用来返回Student的信息。但是,我们是不是定义了一个变量,它就能一直存在着,并且还有可能在任何地方都能被访问和使用直到其被销毁?仔细想想,上面的需求是比较过分的,因为某些变量在某个功能实现后就不再利用了,但如果这个变量还存在的话,就占用了系统资源了,俗语曰:“站着茅坑不拉#$%”。于是我们对变量的及时和按需求地销毁有一个探讨的话题了。好,切入正题吧,就本人所接触过的来讲,js中支持如下几种类型的变量,分别为:局部变量、类变量、私有变量、实例变量、静态变量和全局变量。接下来我们就一一探讨研究下。局部变量:局部变量一般指在{}范围内有效变量,也就是语句块内有效的变量,如:1functionfoo(flag)2{3varsum=0;4if(flag==true)5{6varindex;7for(index=0;index<10;index++)8{9sum+=index;10}11}("indexis:"+index+"<br>");13returnsum;14}15//("sumis:"+sum+"<br>");("resultis:"+foo(true)+"<br>");该代码执行后输出的结果为:“indexis:undefined”和“resultis:0”,我们可以看到希望输出的index变量的值为undefined,也就是未定义。因此我们可以发现,index变量在if语句块结束后即被销毁了。那么“sum”变量呢?这个变量在foo()函数段执行完毕后被销毁了,如果您去掉我注释的那条语句,再执行,您将会发现系统将报错。值得注意的是,如果我把上面的foo()函数改成如下:1functionfoo(flag)2{3varsum=0;4for(varindex=0;index<10;index++)5{6sum+=index;7}("indexis:"+index+"<br>");9returnsum;10}您将可以看见可以输出index值("indexis:10"),这个是js和其他语言的不同地方,因为index是在for循环的{}外面定义的,因此其作用范围在foo()函数使用完毕后才销毁。类变量:类变量,实际上就是类的一个属性或字段或一个方法,该变量在该类的一个实例对象被销毁后自动销毁,比如我们开始时举的Student类。这个我们不多讨论,大家可以自己试一下。私有变量:私有变量,值得是某个类自己内部是用的一个属性,外部无法调用,其定义是用var来声明的。注意如果不用var来声明,该变量将是全局变量(我们下面将会讨论),如:1functionStudent(name,age,from)2{=FormatIt(name);=age;=from;7varorigName=name;8varFormatIt=function(name)9{(0,5);11}=function()13{14return"myinformationisname:"+origName+",age:"++",from:"+;15}16}1718这里,我们分别定义了一个origName和FormatIt()两个私有变量(按面向对象的解释,应该用类的属性来称呼)。我们把这种情况下的方法也成为变量,因为该情况下的变量是个function类型的变量,而function也属于Object类的继承类。在这种情形下,如果我们定义了varzfp=newStudent("3zfp",100,"ShenZhen")。()方式来访问这两个变量的。注意以下几点:1、私有变量是不能用this来指示的。2、私有方法类型的变量的调用必须是在该方法声明后。如我们将Stu