js中如何定义全局变量

JavaScript07

js中如何定义全局变量,第1张

一、定义及使用全局变量

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)