java 关键字const_Java的黄飞鸿:const关键字

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值