recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - problème arithmétique js, résolvez-le ~~

"1"- -"1";

Le résultat de l'opération ci-dessus est 2. Si vous omettez l'espace au milieu, une erreur sera signalée. S'il y a un espace, le résultat sera 2. Quelqu'un peut-il analyser pourquoi ?

Merci~~

大家讲道理大家讲道理2752 Il y a quelques jours487

répondre à tous(5)je répondrai

  • 某草草

    某草草2017-05-19 10:39:30

    Lors de l'exécution d'une opération de soustraction, js essaiera de convertir les expressions des deux côtés en nombres afin que l'opération puisse être effectuée (un petit comportement de correction d'erreur), et deviendra 1-(-1), ce qui donne 2 .
    Quant à l'erreur signalée sans espaces, il s'agit complètement d'une erreur grammaticale. .
    Et c'est une erreur, pas une question de constantes ou non. Même si elle est modifiée en variable, a--b est une mauvaise syntaxe. L'analyseur ne sait même pas comment corriger l'erreur. est remplacé par a-( -b) ? Cela détruirait directement --, détruisant la logique
    À moins que vous a---b, l'analyseur puisse le faire (a--)-b pour vous, mais comme. ceci La façon d'écrire est aussi très drôle. Peut-être que ce que vous voulez exprimer est a-(--b) ?

    L'analyseur ne fera quelques corrections pour vous que lorsque la signification (il pense) est relativement claire, tout comme ''-'' seuls les nombres en js prennent en charge la soustraction, donc si vous n'êtes pas un nombre, il le convertira en Des nombres, mais ''+'' et 0+'', dans ce cas, ils doivent être corrigés en fonction de votre première expression, sinon il ne saura pas si vous effectuez une concaténation ou une addition de chaînes. Quant à la création -- Eh bien, c'est ça. dommage. C'est une correction d'erreur complètement destructrice. Cela ne peut certainement pas être fait

    .

    Ne vous attardez pas trop sur ce genre de choses, c'est une question de divertissement. . Quand il s’agit de coder, je pense que personne sensé ne ferait ça

    répondre
    0
  • 仅有的幸福

    仅有的幸福2017-05-19 10:39:30

    1. Quand il y a des espaces entre les deux -, cela est considéré comme un signe moins, tout comme @Die Fatty a répondu. Les chaînes des deux côtés seront converties en nombres, 1 moins -1 vaut 2 -有空格的时候,被认为是减号,如 @死胖子 回答的一样。两边字符串会被转成数字处理, 1减-1得2;

    2. 两个-没有空格,就变成了--

       ;
    Sans espaces, les deux - deviennent l'opérateur -- Il s'agit d'une opération d'auto-décrémentation et ne peut être utilisée que pour les variables. Appliquer cette notation à un nombre entraînera certainement une erreur. Si vous n'y croyez pas, vous pouvez essayer #🎜🎜#
    1--        //Uncaught ReferenceError: Invalid left-hand side expression in postfix operation
    --1        //Uncaught ReferenceError: Invalid left-hand side expression in postfix operation
    #🎜🎜# #🎜🎜#

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-19 10:39:30

    1- -1 équivaut à 1-(-1)

    répondre
    0
  • 为情所困

    为情所困2017-05-19 10:39:30

    -"1" est une opération unaire, qui convertit la chaîne en -1. Par rapport à 1-(-1), on obtient 2.

    S'il n'y a pas d'espaces, l'analyseur signalera une erreur de syntaxe.

    répondre
    0
  • 怪我咯

    怪我咯2017-05-19 10:39:30

    Il y a d'abord deux opérateurs, l'opérateur espace, l'opérateur moins et l'opération de valeur négative. Ce dernier a une priorité plus élevée que le premier. -"1" sera implicitement converti en -1
    De plus, il n'y a pas d'espace, ce qui est une opération d'auto-décrémentation. Comme l'a dit @deepgoing, les "constantes" ne peuvent pas effectuer d'opérations d'auto-incrémentation et d'auto-décrémentation

    .

    répondre
    0
  • Annulerrépondre