100 votes

Javascript : différence entre une déclaration et une expression ?

J'ai demandé este Après avoir réfléchi à cette question, je me suis demandé où se trouve la frontière apparemment floue entre les termes "déclaration" et "expression". Toutes les déclarations sont-elles aussi des expressions ? D'où viennent les valeurs de retour dans une console REPL ? Elles ne semblent pas toujours avoir un sens intuitif. Bien sûr, si vous tapez 1+1 vous obtiendrez 2 mais d'autres fois, la logique n'est pas aussi évidente.

Étant donné que tout ce qui est tapé dans REPL produit un peu de cela signifie-t-il qu'elle peut être utilisée dans le code source JS à la fois comme une expression et une déclaration autonome ?

peut être une chaîne de code qui pourrait être utilisée pour _X_ dans l'extrait suivant peut également être utilisé pour les éléments suivants _Y_ et vice versa ? if(_X_) _Y_

9voto

Eldiyar Talantbek Points 494

Tous les programmes en JavaScript sont composés d'instructions et se terminent par des points-virgules, à l'exception des instructions de type bloc qui sont utilisées pour regrouper zéro ou plusieurs instructions. Déclarations ne font qu'effectuer certaines actions mais ne produisent aucune valeur ou sortie alors que expressions retourner une valeur. Lorsque l'interprète voit une expression, il récupère sa valeur et remplace l'expression par la nouvelle valeur. Les déclarations sont utilisées pour manipuler ces expressions. Vous pouvez vérifier si c'est une expression ou une déclaration ici : Analyseur JavaScript

9voto

KJ Sudarshan Points 378

Allez dans la console du navigateur ( Ctrl + Shift + I o Command + Shift + I ) :

Entrez le code qui vous semble ambigu.

Si le navigateur renvoie undefined après chaque ligne d'exécution, sa déclaration.

Si le navigateur renvoie une valeur autre que undefined après chaque ligne d'exécution, son une expression.

Chrome browser console image showing differences between expression and statement

La console du navigateur agit comme si elle utilisait console.log(statement) pour chaque ligne de code saisie. Voir este pour plus d'informations.

Cette procédure ne sert qu'à vérifier.

Mais il est nécessaire de comprendre :

  1. Expressions return valeur, les déclarations ne le font pas.

  2. Toutes les expressions sont des déclarations, mais pas autrement. Vous ne pouvez pas utiliser une déclaration à la place d'une expression.

5voto

SherylHohman Points 3894

Je vous recommande vivement de lire l'article détaillé du Dr Axel Rauschmayer sur son blog.
Expressions et déclarations en JavaScript
comme mentionné dans la réponse acceptée de @ZER0 ci-dessus.

Mais mon raccourci mémoire préféré est :

Expression :
e peut être réglé E qual à un Expression
ou Expressed en l'imprimant.
Déclaration :
..tout autre chose.


Le texte suivant a été modifié à partir de
Réponse d'Anders Kaseorg sur Quora .

Une déclaration est une ligne complète de code qui exécute une action.

E très E L'expression peut être utilisée comme une déclaration
(dont l'effet est d'évaluer l'expression, et ignorer la valeur résultante) .

Mais un E Une expression est une section du code qui e valu à un valu e .

Les expressions peuvent être combinées "horizontalement" en de plus grandes expressions à l'aide d'opérateurs.
E a un sommet horizontalement plat

La plupart des déclarations ne peuvent pas être utilisées comme des expressions.

Les déclarations ne peuvent être combinées "verticalement" qu'en écrivant l'une après l'autre, ou avec des constructions en bloc.
S fonctionne verticalement en comparaison.


D'après le post Quora de Ryan Lam :

Voici une règle générale : si vous pouvez l'imprimer ou l'affecter à une variable, il s'agit d'une expression. Si vous ne le pouvez pas, c'est une déclaration.

Voici quelques exemples d'expressions :

2 + 2
3 * 7
1 + 2 + 3 * (8 ** 9) - sqrt(4.0)
min(2, 22)
max(3, 94)
round(81.5)
"foo"
"bar"
"foo" + "bar"
None
True
False
2
3
4.0

Tous les éléments ci-dessus peuvent être imprimés ou affectés à une variable.

Voici quelques exemples de déclarations :

if CONDITION:
elif CONDITION:
else:
for VARIABLE in SEQUENCE:
while CONDITION:
try:
except EXCEPTION as e:
class MYCLASS:
def MYFUNCTION():
return SOMETHING
raise SOMETHING
with SOMETHING:

Aucune des constructions ci-dessus ne peut être affectée à une variable. Ce sont des éléments syntaxiques qui servent un objectif, mais qui n'ont pas de "valeur" intrinsèque. En d'autres termes, ces constructions n'ont pas de "valeur". Essayer de faire l'une des choses suivantes, par exemple, serait absurde et ne fonctionnerait tout simplement pas :

x = if CONDITION:
y = while CONDITION:
z = return 42
foo = for i in range(10):

1voto

shen Points 110

En bref, l'expression est une valeur, la déclaration est un comportement.

Laissez-moi vous montrer quelques exemples naïfs.

Le code suivant définit un value . Il s'agit d'un statement appelé let statement menée par let mot-clé. Ici 1 es un expression .

// statement
// |---------|
   let n = 1 ;
//        |-|
//        expression

Et ceci est for statement menée par for mot-clé. Il est accompagné d'expressions et de déclarations imbriquées.

//      expression(1)
//      |-----------|
   for (num in numArr) {                 //--+
                                         //  |
      sum += (num * 3); // statement(2)  //  |
//            |-----|                    //  |statement(1)
//            expression(2)              //  |
                                         //  |
   }                                     //--+

Donc un statement est une unité d'instruction qui raconte l'ordinateur ce qu'il faut faire . for statement , while statement , if statement ils sont tous actions en d'autres termes tâches o comportements .

Mais pour expression , nous parlons de valeurs, de biens, d'objets, ou de procédures qui peuvent produire une valeur, comme la fonction.

1 + 2
(2 + 3) * 5 === 25
new Foo()

Donc Javascript a aussi function expression . Porque function est un value . Dans le code suivant,

  1. L'ensemble de l'extrait est une déclaration.
  2. Tout après = est une expression.
  3. return width * height; est une déclaration imbriquée.
  4. width * height est une expression.

    const rectArea = function(width, height) { return width * height; };

0voto

premraj Points 120

Nous avons les deux types d'expressions suivants :

1. Expression booléenne est utilisé pour exécuter le bloc de déclarations . enter image description here

2. Expression arithmétique est utilisé pour les affectations de variables, qui agit comme un déclarations aussi.

Par exemple : number = number + 1;

Prograide.com

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.

Powered by:

X