"1"- -"1";
上記の操作の結果は 2 です。真ん中のスペースを省略すると、エラーが報告されます。スペースがある場合、結果は 2 になります。誰かが理由を分析していただけますか?
ありがとう~~
某草草2017-05-19 10:39:30
減算演算を実行するとき、js は演算を実行できるように両側の式を数値に変換しようとし (小さなエラー修正動作)、1-(-1) となり、結果は 2 になります。
スペースなしで報告されたエラーに関しては、完全に文法上のエラーです。 。
そして、これはエラーであり、定数に変更されたとしても、構文が間違っています。 に変更された場合、パーサーはエラーを修正する方法さえ知りません。あなたにとって a-(-b) ですか? それは直接破壊します -- そしてロジックを破壊します
あなたが a---b をしない限り、パーサーはそれを (a--)-b にすることができますが、この方法ではの文章もとても面白いです。もしかしたらあなたが表現したいのはa-(--b)なのかもしれません
パーサーは、意味が比較的明確である (と考えられる) 場合にのみいくつかの修正を行います。 ''-'' と同様に、JS では数値のみが減算をサポートするため、数値でない場合は数値に変換されます。ただし、「+」と「0+」。この場合、最初の式に基づいて修正する必要があります。そうしないと、文字列の連結を行っているのか加算を行っているのかがわかりません。 - を - - に変更すると、次のようになります。残念ながら、これは完全に破壊的なエラー修正であり、絶対に実行できません。
この種のことにあまりこだわりすぎないでください。これはエンターテイメントの質問です。 。実際にコーディングするとなると、正気の人間ならこんなことはしないと思います
仅有的幸福2017-05-19 10:39:30
2つの-
の間にスペースがある場合、@ Die Fattyが回答したように、マイナス記号とみなされます。両側の文字列は数値に変換され、1 から -1 を引くと 2 になります。
--
演算子になり、これは自己減分演算であり、変数にのみ使用できます。この表記を数値に適用すると、間違いなくエラーが発生します。信じられないなら、試してみてください
リーリー
-
没有空格,就变成了--
为情所困2017-05-19 10:39:30
-"1" は単項演算であり、文字列を -1 に変換します。1-(-1) と比較すると、2 が得られます。
スペースがない場合、パーサーは構文エラーを報告します。
怪我咯2017-05-19 10:39:30
まず、スペース演算子、マイナス演算子、負の値演算の 2 つの演算子があり、後者の方が前者よりも優先されます。 -「1」は暗黙的に -1 に変換されます
さらに、@deepcoming が言ったように、「定数」は自動インクリメントおよび自己デクリメント操作を実行できません