Si oui, quelle est la syntaxe d'une telle déclaration ?
Pourquoi diable cela a-t-il été descendu ? C'est vrai, peu connu et utile si vous travaillez dans un environnement exclusivement Mozilla. +1 de ma part.
Si oui, quelle est la syntaxe d'une telle déclaration ?
Javascript n'a pas vraiment la notion de constante nommée, ou de propriété immuable d'un objet. (Notez que je ne parle pas de ES5 ici).
Vous pouvez déclarer les globaux avec un simple var
dans la portée globale, comme en dehors de toute fonction dans un script inclus par une page web :
<script>
var EXACTLY_ONE = 1;
Votre code peut alors utiliser cette constante bien sûr, bien qu'elle ne soit pas vraiment "constante" car la valeur peut être modifiée (la propriété est mise à jour, en d'autres termes).
modifier - C'est une réponse ancienne à une question ancienne. En 2019, il y a le const
déclaration qui est soutenue un peu partout. Notez toutefois que, comme let
, const
Le cadrage est différent de var
le scoping.
Comme "Pointy" l'a si bien noté, ECMAscript ne dispose pas d'une telle fonctionnalité. Cependant, JavaScript fait :
const a = 7;
document.writeln("a is " + a + ".");
Bien sûr, si vous écrivez du code à mettre sur le web pour qu'il s'exécute dans des navigateurs web, cela ne vous aidera pas beaucoup :-)
Pourquoi diable cela a-t-il été descendu ? C'est vrai, peu connu et utile si vous travaillez dans un environnement exclusivement Mozilla. +1 de ma part.
Tout est global à moins d'être déclaré avec l'option var
mot-clé.
Il n'y a pas de constantes non plus. Vous pouvez simplement les déclarer sans le var
mot-clé.
Si vous voulez assurer une portée globale, vous pouvez l'insérer dans la balise window
objet :
window.GLOBAL_CONSTANT = "value";
Vous pouvez le faire à partir de n'importe quelle portée. Les constantes peuvent ensuite être déclarées dans des fonctions ou des fermetures, bien que je ne le recommande pas.
Si vous ne vous souciez que de la prise en charge des navigateurs les plus récents (ou si vous utilisez un transpilateur tel que Babel pour prendre en charge les navigateurs plus anciens), vous pouvez procéder comme suit :
export const FRUIT = "kiwi"; export const VEGETABLE = "carrot";
import * as Settings from './settings.js'
console.log("The unchangeable fruit is " + Settings.FRUIT);
Il s'agit d'une approche beaucoup plus propre que d'essayer de mettre en œuvre une constante globale, en particulier lorsque vous avez plusieurs fichiers JavaScript dans lesquels vous souhaitez utiliser les constantes.
Vous pourriez le faire avec des getters et setters comme ceci :
Object.defineProperty(window, 'TAU', {
get: function(){return Math.PI*2;}
});
Si vous voulez une fonction générale pour faire cela :
function define(name, value){
Object.defineProperty(window, name, {
get: function(){return value;},
set: function(){throw(name+' is a constant and cannot be redeclared.');},
});
}
// Example use
define('TAU', Math.PI*2);
+1 pour l'utilisation de getters et setters (ce qui devrait permettre au code qui n'est pas dans la portée globale de définir des globaux constants). Vous pouvez modifier le texte pour parler du mode strict, d'autres environnements (tels que nodejs, qui utilise le mode global
au lieu de window
), new Function("return this")()
y globalThis
.
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.
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
Voir aussi : stackoverflow.com/questions/130396/