ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

もういっこプログラムネタ


というのが気になったので試してみました。
JavaScriptはさておき、PHPは文字列連結に「.」を使うので、ほぼ間違いなく文字列が暗黙的に数値へ変換されて計算されると思うんですが…

$ php -r 'echo "2" + 8;'
10

あってました。
JavaSriptはどうなるんでしょう。試してみましょう。

console.log("2"+8)
28

こちらは数値が文字列に変換された上で連結されるようです。ならば文字と数字の並びを入れ替えてみたらどうでしょう。

console.log(8+"2")
82

どうやら優先的に文字列に変換される仕様みたいです。
ではこれ、文字列の連結じゃなくて数値の演算に変えたければどうすればいいんでしょうか?正解はこう。

console.log(2+(Number)("8"))
10

Number型に変換してやればOKです。

ちなみにRubyだと怒られます。

$ ruby -e 'puts "2" + 8'
-e:1:in `+': can't convert Fixnum into String (TypeError)
	from -e:1:in `<main>'

ちゃんと型変換してあげましょう。

$ ruby -e 'puts "2".to_i + 8' 
10
$ ruby -e 'puts "2" + 8.to_s'
28