java 关键字const
const
关键字最早是在javascript中作为ECMAScript 6标准的一部分于2015年引入的。它可能是在javascript中声明变量的最流行的方法,但是javascript在它们之前又是如何呢?
嗨,岩石,萨沙在这里。 今天,我们将在ES6之前的javascript中看到const
关键字的一些替代方法。
const
如上所述, const
是在2015年作为ES6标准的一部分引入的。 const值像let
一样是块范围的,但用于定义常量值(obv)。
变异性
它是恒定的事实并不意味着它是不变的。 这是一个常见的误解,但是any const object can change its properties
,例如any const array can change its data
。 让我向您展示一些示例:
//const object example
//declare a const object with id and msg
const a = {
id : 5 ,
msg : "Hello!"
}
//change property of constant object
a.msg = "Hi!" ; //c changes it's value
//reasign constant object
a = { msg : "new object!" }; //TypeError: Assignment to constant variable.
//const array example
//declare const array
const arr = [ "Hello" , "Constant" ];
//push new element to array
arr.push( "works" ); //push new element - ok
//change first element in array
arr[ 0 ] = "Hi!" ; //change first element - ok
//reasign to new array
arr = [ "New" , "Array" ]; //change reference - TypeError: Assignment to constant variable.
//primitive const value
//declare consatnt string
const message = "Constant string" ;
message = "New constant string" ; //change value - TypeError: Assignment to constant variable.
综上所述: const
创建一个指向值的不可变指针,但其自身的值仍然可变。 如果要创建一个完全不变的值,则应使用Object.freeze() 。
ES6之前的const
那么,如何使用ES6之前的标准声明一个恒定值? You don't
。 是的 最好使用ALL_CAPS
编写声明一个变量,这样每个人都知道不应更改它。 另一种方法是使用“立即调用的函数表达式”(IIFE)创建“存储库”。 IIFE内部声明的所有数据在其范围之外均不可见或不可更改。 因此,您必须执行以下操作:
//declare constant values names
var ONE = "ONE" ;
var TWO = "TWO" ;
//create a repositpory for them
var ConstValues = ( function () {
//(function(){})() creates a scoped function.
//only get method is visible from outside, so no one can
//change data
var data = {};
//create two constant values
data[ONE] = "uno" ;
data[TWO] = "due" ;
//everything inside return will be visible outside
return {
get : function ( name ) { return data[name]; }
};
})();
//get constant value
var two = ConstValues.get(TWO); //due
//change constant value
ConstValues.data[TWO] = "dos" ; //TypeError: Cannot set property 'TWO' of undefined
//ConstValue.data is not visible here! (so you cannot change its properties)
迷人,是的。
您还可以使用始终返回相同值的函数:
//declare constant values as function
function CONST_VALUE () {
return "constant_value" ;
}
CONST_VALUE(); //"constant_value"
//function to create a function that returns a constant value
function constant ( value ) {
return function () {
return value;
}
}
var a = constant( 5 );
a(); //5
结论
对于javascript开发人员来说,日子很艰难。
在本文中,我们学习了const
的基础知识以及一些曾经在javascript中创建“恒定”值的奇怪方法。
聚苯乙烯
每次不重新分配该值时,都应始终使用const
,这样可以更轻松地读取代码并避免出现错误和副作用。
翻译自: https://hackernoon.com/once-upon-a-time-in-javascript-const-vr3q3zz6
java 关键字const