数値 or 文字列

JS

いきなりですがクイズです。

下のコンソールはどう表示されるでしょうか?

console.log(5 + '7')

正解は 57

12にはなりません。

これはjavascriptで+を使う場合、どちらかが文字列の場合はもう片方も文字列に変換されます。

では3つ以上の数を使う場合はどうなるのでしょうか?

試してみました。

console.log(5 + 5 + '7' + 5)//1075
console.log('5' + 5 + 7 + 5)//5575
console.log(5 + '5' + 7 + 5)//5575
console.log(5 + 5 + 5 + '7' + 5)//1575

javascriptは前から順に読み込んでいるので5 + 5 + ‘7’ + 5は5+5は数値として計算されるということですね。

Number()

値を数値化するのに便利なのが

Number()

他にも

+ 0

をつければ数値変換し、

+ ""

をつければ

文字列になります。

もう1点Number()で注意が必要なところが

整数部分だけを取得するわけではないこと

です。

そこで以下のメソッドを紹介します。

Math.floor(x)

引数xを切り捨てた整数を返します。

Math.ceil(x)

引数xを切り上げた整数を返します。

Math.round(x)

引数xを四捨五入します。

話を戻してNumber()を使って整数を取得するにはこうなります。

const numString = "123.45"
const num = Number(numString) // 文字列を数値に変換

const integerNum = Math.floor(num) // 整数部分のみを取得

console.log(integerNum) // Output: 123

typeof

他にもtypeofを使って数値か文字列かを判別する方法もあります。

以下は三項演算子を使って、typeofで数値かどうかを判別し、

数値ならば3桁カンマ区切りの数値に変換し、

そうでなければ’数値を入力してください’というメッセージを表示しています。

const num = 1000
const Number = typeof num === 'number' ? num.toLocaleString() : '数値を入力してください'
console.log(Number)//1,000