もういっこプログラムネタ
@yuu_hara JSだかPHPだかで"2"+8するとどうなったけー型エラー出たっけーなどと思い出しつつ
— ぼろんじ(ArchLinuxBotでないさん (@__boronium) 11月 27, 2012
というのが気になったので試してみました。
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