Il y a quelque temps, j'ai répondu à une question sur la différence entre utiliser ou non le mot-clé var lors de la définition de variables.
1. Dans la portée de la fonction, les variables définies avec var sont des variables locales et les variables définies sans var deviennent des variables globales.
Utiliser la définition var :
var a = 'hello World'; function bb(){ var a = 'hello Bill'; console.log(a); } bb() //'hello Bill' console.log(a); //'hello world'
Ne pas utiliser la définition var :
var a = 'hello World'; function bb(){ a = 'hello Bill'; console.log(a); } bb() //'hello Bill' console.log(a); //'hello Bill'
2. Dans la portée globale, les variables définies avec var ne peuvent pas être supprimées, et les variables définies sans var peuvent être supprimées. Cela signifie que les variables globales implicites ne sont pas à proprement parler des variables réelles, mais des attributs de l'objet global. être supprimé via delete, mais les variables ne le peuvent pas.
3. Utiliser var pour définir une variable favorisera également la déclaration de variable, c'est-à-dire
Utilisez la définition var :
function hh(){ console.log(a); var a = 'hello world'; } hh() //undefined
Ne pas utiliser la définition var :
function hh(){ console.log(a); a = 'hello world'; } hh() //'a is not defined'
Il s'agit de la déclaration des variables définies à l'aide de var à l'avance.
4. Dans le mode 'use strict' d'ES5, si la variable n'est pas définie à l'aide de var, une erreur sera signalée.