Maison >interface Web >js tutoriel >Explication détaillée du bloc d'instructions {} dans les connaissances JavaScript_Basic

Explication détaillée du bloc d'instructions {} dans les connaissances JavaScript_Basic

WBOY
WBOYoriginal
2016-05-16 15:13:151439parcourir

Aujourd'hui, j'ai appris à analyser une chaîne json et utilisé la méthode eval(). Pourquoi dois-je ajouter des parenthèses lors de l'analyse d'une chaîne ? Perplexe. Il s'avère que le bloc d'instructions {} en JavaScript est ambigu et qu'une erreur se produira si les parenthèses ne sont pas ajoutées. Comprendre cette ambiguïté est d'une grande aide pour notre compréhension du code JavaScript.

1. Deux significations du bloc d'instructions {}

représente le bloc d'instructions

a. Vous pouvez utiliser {} pour joindre le code en javascript afin de faciliter la gestion du code dans l'éditeur. Étant donné que JavaScript n'a pas de portée au niveau des blocs, cette approche est inoffensive.

{
//some code...
}


b. En JavaScript, les instructions conditionnelles, les instructions de boucle et les fonctions nécessitent toutes des blocs d'instructions {} pour intégrer le code

Objet littéral

var box = {
  name:'kuoaho',
  age:21 
}

//À l'heure actuelle, [code] est utilisé comme expression et peut être affecté à une variable
//En fait, les littéraux d'objet sont des expressions qui peuvent générer des valeurs d'objet

2. Que se passe-t-il si le littéral d'objet n'est pas utilisé comme expression d'affectation ?

exemple :

  {name:'kuoao'}    //没有报错,但是也没有创建对象
  {name:'kuohao',age}  //报错

Comme le montre ce qui précède, les littéraux d'objet ne peuvent être attribués que sous forme d'expressions. Il n'y a rien de mal avec la première façon d'écrire, mais JavaScript l'analyse comme une instruction d'étiquette.

analyse :

  {name:'kuoao'}

    //{}一个语句块
   // name:'kuohao',一个label语句,用于标记for循环

3. Mais le problème revient...

{
name:'kuohao',
age:21
}

//Pourquoi cela provoque-t-il une erreur ? N'est-ce pas ainsi que les littéraux d'objet sont écrits ?
En raison de l'ambiguïté de {} en JavaScript, {} est non seulement considéré comme un objet littéral mais également comme un bloc de code.

analysis:
  {
  name:'kuohao',
  age:21
  }

Un bloc de code, deux instructions d'étiquette, s'il n'y a pas de virgule, il n'y a aucun problème, donc la clé est la virgule. Les deux instructions doivent être séparées par un point-virgule, donc JavaScript déterminera qu'il s'agit d'une syntaxe. erreur

4. Écriture correcte

({
  name:'kuohao',
  age:21
  })

  //正确的写法

() convertira une instruction en une expression, appelée expression d'instruction. Un objet littéral n'est-il pas une expression ? Pourquoi avez-vous besoin de () pour convertir ?

Après l'ajout de parenthèses, cette ambiguïté peut être éliminée, car le code entre parenthèses sera converti en évaluation d'expression et renvoyé, de sorte que le bloc d'instruction devient un littéral d'objet, et on peut également conclure que les littéraux d'objet doivent exister en tant que expressions

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