サーチ…


備考

一部の言語では、宣言する変数の種類を事前に定義する必要があります。 JavaScriptはそれをしません。それだけでそれを理解しようとします。場合によっては予期しない動作が発生することがあります。

次のHTMLを使用すると

<span id="freezing-point">0</span>

JSを介してコンテンツを取得しても、それを期待しているにもかかわらず、数字に変換することはありません 。以下のスニペットを使用すると、 boilingPoint100になると予想されることがあります。しかし、JavaScriptはmoreHeatを文字列に変換し、2つの文字列を連結します。結果は0100ます。

var el = document.getElementById('freezing-point');
var freezingPoint = el.textContent || el.innerText;
var moreHeat = 100;
var boilingPoint = freezingPoint + moreHeat;

これを解決するには、 freezingPointを数値に明示的に変換します。

var el = document.getElementById('freezing-point');
var freezingPoint = Number(el.textContent || el.innerText);
var boilingPoint = freezingPoint + moreHeat;

最初の行では、格納する前に"0" (文字列)を0 (数値)に変換します。追加した後、期待した結果が得られます( 100 )。

文字列を数値に変換する

Number('0') === 0

Number('0')は文字列( '0' )を数値( 0 )に変換し、

より短いが、あまり明確でない形式:

+'0' === 0

単項+演算子は数値に何も作用しませんが、何かを数値に変換します。
興味深いことに、 +(-12) === -12

parseInt('0', 10) === 0

parseInt('0', 10)は文字列( '0' )を数値( 0 )に変換します。第2引数は基数です。指定されていない場合、parseIntは文字列を間違った番号に変換できます。

数値を文字列に変換する

String(0) === '0'

String(0)は数字( 0 )を文字列( '0' )に変換します。

より短いが、あまり明確でない形式:

'' + 0 === '0'

二重否定(!! x)

二重否定!!別個のJavaScript演算子でも特殊な構文でもなく、2つの否定のシーケンスです。その適切に任意の型の値を変換するために使用されるtrueまたはfalseそれがtruthyfalsyであるかどうかに応じてブール値。

!!1            // true
!!0            // false
!!undefined    // false
!!{}           // true
!![]           // true

最初の否定はに任意の値を変換しfalseそれはtruthyとする場合にはtrue falsyある場合。 2番目の否定は通常のブール値で動作します。彼らは一緒に任意のtruthy値に変換trueとする任意のfalsyfalse

しかし、多くの専門家は、このような構文を許容できないものとして使用することを検討し、書いた方が長くても、選択肢を読みやすくすることを推奨します。

x !== 0        // instead of !!x in case x is a number
x != null      // instead of !!x in case x is an object, a string, or an undefined

!!x使用は、以下の理由により貧弱な方法とみなされます。

  1. 文体的にはそれは特殊な特殊構文のように見えるかもしれないが、実際に暗黙的な型変換を伴う2つの連続する否定以外は何もしていない。
  2. 変数とプロパティに格納されている値の型に関する情報をコードを通じて提供する方が良いでしょう。たとえば、 x !== 0は、 xはおそらく数字であると言っていますが、 !!xはコードの読者にこのような利点を伝えません。
  3. Boolean(x)使用法は同様の機能を提供し、より明示的な型の変換です。

暗黙の変換

JavaScriptは、使用時に自動的に変数をより適切な型に変換しようとします。通常、明示的に変換を行うことをお勧めします(他の例を参照)。しかし、暗黙のうちにどのような変換が行われるかは分かりません。

"1" + 5 === "15" // 5 got converted to string.
1 + "5" === "15" // 1 got converted to string.
1 - "5" === -4 // "5" got converted to a number.
alert({}) // alerts "[object Object]", {} got converted to string.
!0 === true // 0 got converted to boolean
if ("hello") {} // runs, "hello" got converted to boolean.
new Array(3) === ",,"; // Return true. The array is converted to string - Array.toString();

よりトリッキーな部分のいくつか:

!"0" === false // "0" got converted to true, then reversed.
!"false" === false // "false" converted to true, then reversed.

数値をブール値に変換する

Boolean(0) === false

Boolean(0)は、数値0をブール値false変換しfalse

より短いが、あまり明確でない形式:

!!0 === false

文字列をブール値に変換する

文字列をブール値に変換するには

Boolean(myString)

またはより短いがあまり明確でない形態

!!myString 

空文字列(長さがゼロ)を除くすべての文字列はブール値としてtrueと評価されtrue

Boolean('') === false   // is true
Boolean("") === false   // is true
Boolean('0') === false  // is false
Boolean('any_nonempty_string') === true // is true

整数から浮動小数点へ

JavaScriptでは、すべての数値は内部的に浮動小数点として表されます。つまり、整数を浮動小数点として使用するだけで、整数を変換する必要があります。

整数から浮動小数点へ

浮動小数点を整数に変換するために、JavaScriptには複数のメソッドが用意されています。

floor関数はfloat以下の最初の整数を返します。

Math.floor(5.7); // 5

ceil関数は、浮動小数点数以上の最初の整数を返します。

Math.ceil(5.3); // 6

round関数はフロートを丸めます。

Math.round(3.2); // 3
Math.round(3.6); // 4
6

切り捨て( trunc )フロートから小数を削除します。

Math.trunc(3.7); // 3

切り捨て(との違いに注意してくださいtrunc )とfloor

Math.floor(-3.1); // -4
Math.trunc(-3.1); // -3

文字列を浮動小数点数に変換する

parseFloatは文字列を引数として受け取り、float /

parseFloat("10.01") // = 10.01

ブール値に変換する

Boolean(...)は、すべてのデータ型をtrueまたはfalse変換しfalse

Boolean("true") === true
Boolean("false") === true
Boolean(-1) === true
Boolean(1) === true
Boolean(0) === false
Boolean("") === false
Boolean("1") === true
Boolean("0") === true
Boolean({}) === true
Boolean([]) === true

空の文字列と数字0はfalseに変換され、その他の文字列はすべてtrueに変換されます。

より短いが、あまり明確でない形式:

!!"true" === true
!!"false" === true
!!-1 === true
!!1 === true
!!0 === false
!!"" === false
!!"1" === true
!!"0" === true
!!{} === true
!![] === true

この短い形式では、論理NOT演算子を2回使用する暗黙の型変換を利用します(http://www.riptutorial.com/javascript/example/3047/double-negation#x-


ここでは、 ECMAScript仕様のブール変換の完全なリストを示します

  • myArgundefinedまたはnull場合Boolean(myArg) === false
  • myArgboolean型の場合、 Boolean(myArg) === myArg
  • myArgnumber場合、 Boolean(myArg) === false myArg+0 myArg‑0 、またはNaN場合はBoolean(myArg) === false 。それ以外の場合はtrue
  • もしmyArg型のstring次にBoolean(myArg) === false場合myArg空の文字列である(その長さがゼロです)。それ以外の場合はtrue
  • もしsymbolまたはobjectの型myArgの場合はBoolean(myArg) === true

ブール値としてfalseに変換される値は、 falsyと呼ばれます (そして、他はすべてtruthyと呼ばれます )。 比較操作を参照してください。

配列を文字列に変換する

Array.join(separator)は配列を文字列として出力し、設定可能なセパレータで出力することができます。

デフォルト(separator = "、"):

["a", "b", "c"].join() === "a,b,c"

文字列セパレータを使用する場合:

[1, 2, 3, 4].join(" + ") === "1 + 2 + 3 + 4"

空白のセパレータを使用する場合:

["B", "o", "b"].join("") === "Bob"

配列メソッドを使用した文字列への配列

この方法は、あなたがjoin()でそれを行うことができる何かを習得するために匿名関数を使用しているので、uselssのように見えるかもしれません。しかし、配列をStringに変換しているときに文字列に何かを加える必要がある場合は、これが便利です。

var  arr = ['a', 'á', 'b', 'c']

function upper_lower (a, b, i) {
  //...do something here
  b = i & 1 ? b.toUpperCase() : b.toLowerCase();
  return a + ',' + b
}
arr = arr.reduce(upper_lower); // "a,Á,b,C"

プリミティブからプリミティブへの変換テーブル

文字列に変換されました番号に変換ブール型に変換
未定 "未定義" NaN
ヌル "ヌル" 0
真実 "真" 1
"偽" 0
NaN "NaN"
空文字列 0
"" 0 真実
"2.4"(数値) 2.4 真実
"test"(数値ではない NaN 真実
"0" 0 真実
"1" 1 真実
-0 "0"
0 "0"
1 "1" 真実
無限 "無限大" 真実
- 無限 " - 無限大" 真実
[] "" 0 真実
[3] "3" 3 真実
['a'] "a" NaN 真実
['a'、 'b'] "a、b" NaN 真実
{} "[オブジェクトオブジェクト]" NaN 真実
関数(){} "関数(){}" NaN 真実

太字の値は、プログラマが驚くほどの変換を強調します

明示的な値を変換するには、String()を使用できます。Number()Boolean()



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow