一、定义及使用全局变量
1.在js的function外定义一个变量
var name='测试'function XX(){
alert(name)
}
2.不使用var,直接给定义变量,隐式的声明了全局变量
name='测试'function XX(){
alert(name)
}
这种方法,即使该变量是在一个function内,当该function被执行后它变成了全局变量 ---- 但是function不执行它就不被其他function知道,所以最好定义在function外
3.使用window.变量名定义为全局变量,但是注意:调用时候建议写上window.变量名,当然也可以不写;我们常用的document.getXXX的document对象就是window的
window.name='测试'function XX(){
alert(window.name)
}
二、使用全局变量
全局变量的优点:
可以减少变量的个数,减少由于实际参数和形式参数的数据传递带来的时间消耗。
全局变量的缺点:
(1)全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元。
(2)全局变量破坏了函数的封装性能。函数象一个黑匣子,一般是通过函数参数和返回值进行输入输出,函数内部实现相对独立。但函数中如果使用了全局变量,那么函数体内的语句就可以绕过函数参数和返回值进行存取,这种情况破坏了函数的独立性,使函数对全局变量产生依赖。同时,也降低了该函数的可移植性。
(3)全局变量使函数的代码可读性降低。由于多个函数都可能使用全局变量,函数执行时全局变量的值可能随时发生变化,对于程序的查错和调试都非常不利。
因此,如果不是万不得已,最好不要使用全局变量。
定义数组
数组对象用来在单独的变量名中存储一系列的值。
我们使用关键词 new 来创建数组对象。下面的代码定义了一个名为 arr 的数组对象:
vararr=newArray()有两种向数组赋值的方法(你可以添加任意多的值,就像你可以定义你需要的任意多的变量一样)。
varmycars=newArray()
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"也可以使用一个整数自变量来控制数组的容量:
varmycars=newArray(3)
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"2:
varmycars=newArray("Saab","Volvo","BMW")-------------------------------------------------------------------------------------
或者用数组字面量(直接量)方便的创建数组。一个数组字面量是在一对方括号中包裹着一个或多个用 逗号 隔开的表达式。并且数组中的每个值都有索引。从0开始。
varempty=[]
varcars=["Saab","Volvo","BMW"]
empty[1]//undefined
cars[1]//'Volvo'
1.定义一些常量,使用闭包,匿名函数实现常量的定义。
例如:
var
Class
=
(function()
{
var
UPPER_BOUND
=
100//定义了常量
var
Test={}
//
定义了一个静态方法
获取常量的方法
Test.getUPPER_BOUND=function()
{
return
UPPER_BOUND
}
return
Test
})()
用法:
var
k=Class.getUPPER_BOUND()
alert(k)//
2.多个常量的情况下:
var
Class
=
(function()
{
//
Private
static
attributes.
var
constants
=
{//定义了两个常量
UPPER_BOUND:
100,
LOWER_BOUND:
-100
}
var
Test={}
//
定义了一个静态方法
Test.getConstant=function(name){//获取常量的方法
return
constants[name]
}
return
Test
})()
用法:
var
k=Class.getConstant('UPPER_BOUND')
alert(k)