51 votes

Peut-on déclarer des constantes globales en JavaScript ?

Si oui, quelle est la syntaxe d'une telle déclaration ?

0 votes

Si par global vous voulez dire une variable qui peut être appelée après changement sur les pages du domaine alors ce dont vous avez besoin c'est de cookies

0 votes

@Dcrodger : Non, juste global entre les fonctions. En outre, il s'agit d'une constante, pas d'une variable - par conséquent, les cookies seraient exagérés.

0 votes

3voto

leon Points 31

Si vous voulez vous assurer que la valeur ne peut pas changer, utilisez une fonction.

Donc, au lieu de :

var Const_X=12

utiliser :

function Const_X() {
return 12;
}

2voto

Alvin Baldemeca Points 31
La réponse directe à cette question est non. Il serait cependant très utile que l'ECMA/JS permette de réaliser facilement la programmation fonctionnelle. Une astuce pratique que j'utilise pour contourner ce problème consiste à déclarer une constante dans la portée globale et à utiliser une fonction d'encapsulation (voir l'exemple ci-dessous) :

)

global_var = 3; //This can change say inside a function etc. but once you decide to make //this global variable into a constant by calling on a function const make_variable_constant = function(variable) { const constant = variable; return constant; }

const const_global = make_variable_constant(global_var);

)

À l'époque où la programmation orientée objet était à la mode, un jeune de ma classe a dit à l'instructeur de C que le C n'était pas orienté objet, ce à quoi l'instructeur a répondu qu'il avait fait de la programmation orientée objet en C avant même que Java et C++ ne soient conçus. De même, vous pouvez faire de la programmation fonctionnelle en Javascript mais c'est beaucoup plus difficile. C'est comme faire de la programmation orientée objet en C alors que c'est plus facile de le faire en C++.

0voto

magallanes Points 1024

Pour mémoire.

// ES6+ code:
const CONSTGLOBAL1=200;  // it is a constant global

function somef() { 
   document.write(CONSTGLOBAL1); // CONSTGLOBAL1 is defined (because it's global)
   const CONSTLOCAL=200; // it's a local constant
   document.write(CONSTLOCAL); // CONSTLOCAL is defined
}       
somef();
document.write(CONSTLOCAL); // CONSTLOCALis NOT defined.

Ainsi, si la constante est définie à l'intérieur de {}, elle est locale, sinon, elle est globale.

0voto

ronatory Points 4328

Similaire à La réponse de kojow7 mais au lieu de saisir toutes les exportations nommées, j'aime utiliser une seule exportation nommée, par ex. Constants et ensuite déclarer mes constantes comme ceci :

  1. Créez un fichier Constants.js en déclarant vos constantes comme ceci et en les exportant Constants :

    // Constants.js export const Constants = { FRUIT: "kiwi", VEGETABLE: "carrot", };

  2. Faites une importation nommée dans les fichiers pour lesquels vous avez besoin d'une constante :

    import { Constants } from './Constants';

  3. Utilisez ensuite les constantes comme suit :

    console.log("The unchangeable fruit is " + Constants.FRUIT);

Il ne semble pas y avoir d'inconvénient à utiliser l'une plutôt que l'autre option, mais ce que j'aime personnellement, c'est que je nomme le fichier comme je veux l'importer. import { Constants } from './Constants'; et ne pas toujours penser à la façon dont je l'appelle lorsque je saisis toutes les exportations nommées. import * as Constants from './Constants' . Donc, dans le second cas, je pourrais vouloir regarder dans un autre fichier où j'ai déjà importé les constantes et regarder comment j'ai nommé l'importation en cas de cohérence. Regardez aussi aquí pour les différentes possibilités d'exportation/importation.

-1voto

Antonio Ooi Points 50

Si vous ne prévoyez pas de modifier la valeur des propriétés d'un objet, vous pouvez utiliser la fonction Object.freeze() :

window.globalConst = Object.freeze( { x: 1, y: true } );

L'exemple suivant illustre la différence entre const y Object.freeze() :

const x = Object.freeze({
  a: 1,
  b: 2
});

x.a = 3;

// x.a is still = 1
console.log("x.a = ", x.a);

const y = {
  a: 1,
  b: 2
};

y.a = 3;

// y.a has been changed to 3
console.log("y.a = ", y.a);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X