私は JavaScript を学んでいて、この質問をされました。誰か助けてくれますか? 次の Javascript ステートメントは何を返しますか? またその理由は何ですか?
parseInt("07"); parseInt("09"); parseInt("010");
"1" + 2 + 3;
"1" == 1; "1" === 1; "1" == 真; "1" === 偽;
私は JavaScript を学んでいて、この質問をされました。誰か助けてくれますか? 次の Javascript ステートメントは何を返しますか? またその理由は何ですか?
parseInt("07"); parseInt("09"); parseInt("010");
"1" + 2 + 3;
"1" == 1; "1" === 1; "1" == 真; "1" === 偽;
parseInt("07"); parseInt("09"); parseInt("010");
7,
0, (invalid)
8
それぞれ。これは、先頭の 0 が 8 進数を指定しているためです。また、8 進数には 0 ~ 7 の文字のみを含めることができます。9 は無効です。
"1" + 2 + 3;
123 (文字列)
"1" == 1; "1" === 1; "1" == true; "1" === false;
true
false
true
false
開発コンソール(ChromeデベロッパーツールやFirebugのコンソールなど)を起動し、ステートメントを入力すると、次の結果が得られます。
parseInt('07'); -> 7
parseInt('09'); -> 0
parseInt('010'); -> 8
これは、parseIntが、渡す文字列に含まれる数値の正しい基数を判別しようとするために発生します。これらの数値は0から始まるため、JavaScriptは「8進数」の値を渡していると想定します。たとえば、09はそこに存在しないため、0を返します。2番目のパラメータをparseInt(「基数」と呼ばれます)に渡すことで、この問題を簡単に回避できます。
したがって、ほとんどの場合に当てはまる10進数が必要な場合は、次のように記述します。
parseInt('09', 10);
"1" + 2 + 3;
JavaScriptはバックグラウンドでタイプを自動的に変換するため、文字列「123」を返します。文字列に数値を追加すると、それらが変換されて連結されます。
"1" == 1; "1" === 1; "1" == true; "1" === false;
ここに、比較するための2つの異なる演算子があります。==
値のみ===
を比較し、値とタイプを比較します。===
本当に使用したいことが確実でない限り、ほとんどの場合に使用することをお勧めします==
。
最初のステートメントはtrueを返し、型はバックグラウンドで変換され、値は同じです。2番目のステートメントはfalseを返します。これは、型が変換されておらず、StringとNumberを比較しているためです。「1」は真の値と見なされるため、3番目はtrueを返します。このため、4番目はもちろんfalseを返します。