var

Déclare une variable à portée de fonction. C’est l’ancienne façon, remplacée aujourd’hui par let et const.

Sur cette page

Exemple

#
JavaScript
function checkAccess(points) {
  if (points >= 100) {
    var status = 'premium'
  }
  return status
}

console.log(checkAccess(150))
console.log(checkAccess(20))
Console
premium
undefined

Définition et utilisation

#

var est la plus ancienne façon de déclarer des variables en JavaScript. Vous le trouverez dans d’anciens tutoriels, des bibliothèques et du code écrit avant 2015, donc cela vaut la peine de comprendre son fonctionnement même si vous ne l’utilisez jamais vous-même.

Une variable déclarée avec var a la portée de toute la fonction, pas d’un bloc. Déclarée à l’intérieur d’un if ou d’une boucle, elle reste visible aussi en dehors. De plus, la déclaration est « remontée » (hoisting) au sommet de la fonction : la variable existe déjà dès la première ligne et vaut undefined jusqu’à ce que le programme atteigne l’affectation.

On peut déclarer le même nom avec var plusieurs fois sans aucune erreur. Combiné à la portée de fonction, cela facilite l’écrasement accidentel d’une valeur, c’est pourquoi le nouveau code devrait utiliser let et const.

Syntaxe

#
Syntaxe
var name
var name = value
var name1 = value1, name2 = value2

Plus d’exemples

#
Hoisting : la variable existe avant la déclaration
JavaScript
console.log(bonus)
var bonus = 50
console.log(bonus)
Console
undefined
50
Piège : var dans une boucle avec un délai
JavaScript
for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log('var:', i), 0)
}

for (let j = 0; j < 3; j++) {
  setTimeout(() => console.log('let:', j), 0)
}
Console
var: 3
var: 3
var: 3
let: 0
let: 1
let: 2

Toutes les fonctions de la première boucle voient la même variable i, qui vaut 3 une fois la boucle terminée. let crée une nouvelle variable à chaque tour.

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • N’utilisez pas var dans du nouveau code. let et const ont une portée de bloc prévisible et signalent une erreur quand une variable est utilisée avant sa déclaration.
  • En retouchant du vieux code, remplacez var par let avec prudence. Si la variable était utilisée hors du bloc où elle était déclarée, déplacez la déclaration plus haut.
  • Dans un script ordinaire (hors module), var au premier niveau crée une propriété sur l’objet window. let et const ne le font pas.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.