予期しない方法で記述0.5
し0.-5
たが、それでも実行できるとします。何を0.
して0.-5
、それはまだ実行することができそうと評価さ-5?
alert(0.-5+1)
-4を出力するものも試しましたが、JavaScriptは無視0.
し0.-5
ますか?
予期しない方法で記述0.5
し0.-5
たが、それでも実行できるとします。何を0.
して0.-5
、それはまだ実行することができそうと評価さ-5?
alert(0.-5+1)
-4を出力するものも試しましたが、JavaScriptは無視0.
し0.-5
ますか?
0.-5
が「思いがけない方法」だと思う理由は何ですか?
0.-5
構文エラーがあり、末尾にピリオドが付いたfloatリテラルを許可せず.0
、最後に書き込むように強制したいと思います。
.
すると、次のようなものを書くことができなくなるため、特に悪いです123.toString(16)
(一般的なトリックは、を使用することです123..toString(16)
。これは実際に(123.).toString(16)
)
回答:
aの後の末尾の数字.
はオプションです。
console.log(0. === 0); // true
そう
0.-5
に評価する
0 - 5
これはただ-5
です。同様に、
0.-5+1
です
0 - 5 + 1
これは
-5 + 1
または-4
。
0.-5
0.
[1]、-
およびとして正常に解析できます5
。以下は、ASTエクスプローラーによって生成された式の抽象構文ツリーです。
これは(予期しない方法で)有効なJavaScriptであり、に評価され-5
ます。
[1]数値リテラルの文法によると、 10進数と指数部分はオプションです。
NumericLiteral ::
DecimalLiteral
[...]DecimalLiteral ::
DecimalIntegerLiteral。DecimalDigits opt ExponentPart opt
JSでは、オプションの小数点を使用して数値を表現できます。
x = 5.; //5
x = 5. + 6. //11
また、Tvde1のコメントの時点では、任意のNumberメソッドも適用できます。
5..toString()
この構文により、括弧なしでNumber関数を実行できます。
5.toString() //error
(5).toString() //good
5..toString() //good
5 .toString() // awesome
理由については、この質問を参照してください。
5..toString()
。
1.0
浮動小数点ですが1.
整数です。
float
sにはメソッドがあり、5.
はfloat
です。
(1).toMethod()
(1.)
console.log(0. - 5) // -5
console.log(0 - 5) // -5
console.log('0.' - 5) // -5
console.log('0' - 5) // -5
console.log(0.-5 === -5) // true
「0」または「0」はJavaScriptでも同じです。これは、型が数値と呼ばれる数値に対して一意であるためです。マイナス演算子は数値の間にあります。渡したものを常に数値に変換するようにしてください。Pythonでは、いくつかのタイプがあるため、最初はFloatで、2番目はIntegerです。
0.
のような0.0
です。または単に0
。