js中如何定义 常量?

JavaScript011

js中如何定义 常量?,第1张

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)

判断浏览器是否支持ActiveX控件

闭包的两个特点:

1、作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。

2、一个闭包就是当一个函数返回时,一个没有释放资源的栈区。

例1。

<scripttype="text/javascript">

functionsayHello2(name){

vartext='Hello'+name//localvariable

varsayAlert=function(){alert(text)}

returnsayAlert

}

varsy=sayHello2('never-online')

sy()

</script>

作为一个Javascript程序员,应该明白上面的代码就是一个函数的引用。如果你还不明白或者不清楚的话,请先了解一些基本的知识,我这里不再叙述。

上面的代码为什么是一个闭包?

因为sayHello2函数里有一个内嵌匿名函数

sayAlert = function(){ alert(text)}

在Javascript里。如果你创建了一个内嵌函数(如上例),也就是创建了一个闭包。

在C或者其它的主流语言中,当一个函数返回后,所有的局部变量将不可访问,因为它们所在的栈已经被消毁。但在Javascript里,如果你声明了一个内嵌函数,局部变量将在函数返回后依然可访问。比如上例中的变量sy,就是引用内嵌函数中的匿名函数function(){ alert(text)},可以把上例改成这样:

<scripttype="text/javascript">

functionsayHello2(name){

vartext='Hello'+name//localvariable

varsayAlert=function(){alert(text)}

returnsayAlert

}

varsy=sayHello2('never-online')

alert(sy.toString())

</script>

这里也就与闭包的第二个特点相吻合。

例2。

<scripttype="text/javascript">

functionsay667(){

//Localvariablethatendsupwithinclosure

varnum=666

varsayAlert=function(){alert(num)}

num++

returnsayAlert

}

varsy=say667()

sy()

alert(sy.toString())

</script>

上面的代码中,匿名变量function() { alert(num)}中的num,并不是被拷贝,而是继续引用外函数定义的局部变量——num中的值,直到外函数say667()返回。

例3。

<scripttype="text/javascript">

functionsetupSomeGlobals(){

//Localvariablethatendsupwithinclosure

varnum=666

//Storesomereferencestofunctionsasglobalvariables

gAlertNumber=function(){alert(num)}

gIncreaseNumber=function(){num++}

gSetNumber=function(x){num=x}

}

</script>

<buttononclick="setupSomeGlobals()">生成-setupSomeGlobals()</button>

<buttononclick="gAlertNumber()">输出值-gAlertNumber()</button>

<buttononclick="gIncreaseNumber()">增加-gIncreaseNumber()</button>

<buttononclick="gSetNumber(5)">赋值5-gSetNumber(5)</button>

上例中,gAlertNumber, gIncreaseNumber, gSetNumber都是同一个闭包的引用,setupSomeGlobals(),因为他们声明都是通过同一个全局调用——setupSomeGlobals()。

你可以通过“生成”,“增加”,“赋值”,“输出值”这三个按扭来查看输出结果。如果你点击“生成”按钮,将创建一个新闭包。也就会重写gAlertNumber(), gIncreaseNumber(), gSetNumber(5)这三个函数。

Number.MAX_VALUE 是 js的一个常量,表示js可表示的最大值 ,值为 1.7976931348623157e+308,在使用时可用来判断某个值是否超出了js可表示的最大值.一般用在判断 常量是否超出js 最大范围可以通过alert(Number.MAX_VALUE)来自己看看 弹出值。