Are there constants in JavaScript?

后端 未结 30 2904
抹茶落季
抹茶落季 2020-11-22 08:53

Is there a way to use constants in JavaScript?

If not, what\'s the common practice for specifying variables that are used as constants?

30条回答
  •  臣服心动
    2020-11-22 09:26

    Yet there is no exact cross browser predefined way to do it , you can achieve it by controlling the scope of variables as showed on other answers.

    But i will suggest to use name space to distinguish from other variables. this will reduce the chance of collision to minimum from other variables.

    Proper namespacing like

    var iw_constant={
         name:'sudhanshu',
         age:'23'
         //all varibale come like this
    }
    

    so while using it will be iw_constant.name or iw_constant.age

    You can also block adding any new key or changing any key inside iw_constant using Object.freeze method. However its not supported on legacy browser.

    ex:

    Object.freeze(iw_constant);
    

    For older browser you can use polyfill for freeze method.


    If you are ok with calling function following is best cross browser way to define constant. Scoping your object within a self executing function and returning a get function for your constants ex:

    var iw_constant= (function(){
           var allConstant={
                 name:'sudhanshu',
                 age:'23'
                 //all varibale come like this
    
           };
    
           return function(key){
              allConstant[key];
           }
        };
    

    //to get the value use iw_constant('name') or iw_constant('age')


    ** In both example you have to be very careful on name spacing so that your object or function shouldn't be replaced through other library.(If object or function itself wil be replaced your whole constant will go)

提交回复
热议问题