在编写JS代码一些特定条件的时候,程序开始需要一个变量用来存储一些声明后就不能再做操作的数据,这时候可能第一时间会想到Java里面常量的概念。
但是在JS里面没有定义常量这一说,这时候可以使用JS中有一个关键字const可以来定义常量,但目前的浏览器似乎还不支持,如果一定要定义一些常量,
其实可以使用闭包,匿名函数实现常量的定义。
代码如下:
首先定义一个匿名函数
var Class = (function() {
var UPPER_BOUND =
100
;
//定义需要的常量
var Test={};
// 定义了一个静态方法 获取常量的方法
Test.getUPPER_BOUND=function() {
return
UPPER_BOUND;
}
return
Test;
})();
该匿名函数类似于Java里面的递归,属于自身调用,在程序一开始的时候会被自动执行。
当要使用该常量的时候,通过.的方式可以获取定义的常量
var k=Class.getUPPER_BOUND();
当需要定义多个常量的时候也可以这么写
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 k1=Class.getConstant(
'UPPER_BOUND'
);
var k2=Class.getConstant(
'LOWER_BOUND'
);
实际效果如下:
我们定义了两个变量t1,t2,并将它们存入匿名函数中,在存入函数后我们又对值进行了修改。
再次打印存入匿名函数中的值,可以看到函数中的值未改变,与之前我们存入时候的数据一致,通过这种
定义匿名函数的方法可以灵活实现JS中常量的定义。PS:感觉有点投机取巧的意思...