kakts-log

programming について調べたことを整理していきます

javascript 数値と文字列の型 演算

var x = 10;
var y = '10';
var z = 10;

var t = sum(2,3,4);

var p = x + y + z;
print(t);

print(p);
function sum(x,y,z) {
return x+y+z;
}
結果 
t = 9
p = 101010
 となるのはなぜ? 
 疑問なのは、数値x,yと文字列10の変数zを関数sumの中に入れた場合に、x+y+zの演算において、yが数値として型変換されること。 パーフェクトjavascriptによれば、+演算子は数値よりも文字列の連結を優先して型変換を行うということが書いてあり、sum関数の戻り値として期待していたのは、変数pと同じように, x y z が文字列連結されて tも101010になることであった。

 この違いはどこから生ずるのだろうか。おそらく関数に引数として渡す場合もしくは戻り値で呼び出し元にかえってくる時に、何かがごにょごにょ起きているっぽいんだが、よくわからず。 引き続きパーフェクトjavascriptもしくはサイ本を読んで原因を探してみることにする。