Maison  >  Article  >  interface Web  >  Quelle est la différence entre var, let et const en JavaScript

Quelle est la différence entre var, let et const en JavaScript

清浅
清浅original
2019-04-22 15:05:213672parcourir

La différence entre var, let et const est que la variable de var est déclarée avant l'exécution du code et que la portée de travail est dans le contexte de l'exécution en cours. Let permet la création d'une variable mais n'agit que dans son bloc. .Quelle est la similitude entre const et let La seule différence est que les variables définies par const ne peuvent pas être modifiées

Cet article présente principalement les différences entre var, let et const via la méthode de création de variables en JavaScript (ES6) , ce qui a un certain effet de référence. J'espère que cela aidera tout le monde.

Quelle est la différence entre var, let et const en JavaScript

[Cours recommandés : Tutoriel JavaScript]

var VS let

La principale différence entre var et let n'est pas l'utilisation de la portée de la fonction, mais l'utilisation de la portée du bloc. Cela signifie qu'une variable créée à l'aide du mot-clé let est disponible dans le "bloc" dans lequel elle est créée, ainsi que dans tous les blocs imbriqués.

Exemple

function discountPrices (prices, discount) {
  var a = []
  for (var i = 0; i < prices.length; i++) {
    var discountedPrice = prices[i] * (1 - discount)
    var finalPrice = Math.round(discountedPrice * 100) / 100
    a.push(finalPrice)
  }  console.log(i) // 3  console.log(discountedPrice) // 150 
  console.log(finalPrice) // 150
  return a
  }

Dans l'exemple ci-dessus, la raison pour laquelle i, discountedPrice et finalPrice peuvent être utilisés en dehors de la boucle for est qu'ils sont déclarés avec var , et var est la portée de la fonction. Que se passe-t-il si nous remplaçons var par let ?

function discountPrices (prices, discount) {
  let a = []
  for (let i = 0; i < prices.length; i++) {
    let discountedPrice = prices[i] * (1 - discount)
    let finalPrice = Math.round(discountedPrice * 100) / 100
    a.push(finalPrice)
  }  
  console.log(i) // 3  
  console.log(discountedPrice) // 150  
  console.log(finalPrice) // 150
  return a
  }
  discountPrices([100, 200, 300], .5) // 这儿会报错i未定义

Ce que ce cas nous dit, c'est que les variables déclarées à l'aide de let ont une portée de bloc, pas une portée de fonction. Par conséquent, accéder à i (ou discountedPrice ou finalPrice) en dehors du "bloc" signalera une erreur

La différence suivante est liée à la promotion variable. La définition du levage est "L'interpréteur JavaScript attribue aux déclarations de variables une valeur par défaut non définie pendant la phase dite de "création".

Exemple :

function discountPrices (prices, discount) {  
console.log(discounted) // undefined
  var a = []
  for (var i = 0; i < prices.length; i++) {
    var discountedPrice = prices[i] * (1 - discount)
    var finalPrice = Math.round(discountedPrice * 100) / 100
    a.push(finalPrice)
  }
  console.log(i) // 3
  console.log(discountedPrice) // 150
  console.log(finalPrice) // 150
  return a}

if Si vous souhaitez utiliser let pour déclarer des variables avant de les déclarer, au lieu d'être indéfinies (comme les variables déclarées à l'aide de var), le programme signalera une erreur

function discountPrices (prices, discount) {  
console.log(discounted) // 错误
  let a = []
  for (let i = 0; i < prices.length; i++) {
    let discountedPrice = prices[i] * (1 - discount)
    let finalPrice = Math.round(discountedPrice * 100) / 100
    a.push(finalPrice)
  }
  console.log(i) // 3
  console.log(discountedPrice) // 150
  console.log(finalPrice) // 150
  return a}

La conclusion est

var : La déclaration de variable est traitée avant l'exécution du code, et sa portée est dans le contexte de son exécution actuelle.

let : L'instruction let nous permet de créer un. variable dont la portée est limitée au bloc dans lequel elle est utilisée.

let VS const

Maintenant que vous comprenez la différence entre var et let, qu'en est-il de const. ? Il s'avère que const est presque identique à let. La différence est qu'une fois qu'une variable reçoit une valeur à l'aide de const, elle ne peut pas être réaffectée à une nouvelle valeur

let name = &#39;Tyler&#39;
const handle = &#39;tylermcginnis&#39;
name = &#39;Tyler McGinnis&#39; //正确
handle = &#39;@tylermcginnis&#39; //错误

Comme le montre le. ci-dessus, les variables déclarées avec let peuvent être réaffectées, mais les variables déclarées avec const ne peuvent pas être réaffectées. Donc, tant que vous souhaitez qu'une variable soit immuable, vous pouvez la déclarer avec const. Mais déclarer une variable avec const ne signifie pas. qu'il est immuable, juste qu'il ne peut pas être réaffecté, par exemple :

const person = {
  name: &#39;Kim Kardashian&#39;
  }
person.name = &#39;Kim Kardashian West&#39; // 正确
person = {} // 错误

Donc, même si un objet est déclaré comme const, cela ne signifie pas qu'aucune de ses propriétés ne peut être modifiée. qu'il ne peut pas être réaffecté à une nouvelle valeur

Résumé : ce qui précède représente l'intégralité du contenu de cet article. J'espère que cela aidera tout le monde

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn