Javascript:変数の初期化の落とし穴

数字を格納する予定の場合は初期化必須ですね。 以下のコードを実行するとNaNが出力されます:

function sum(){
  var total; // total =0 とすべき
  for(let i=0;i<arguments.length;i++){
     total+=arguments[i];
  } 
  return total;
}

console.log(sum(10,20));

理由は、var totalの値はundefinedであり、undefined+数字NaNであるから。

PHPとかPerlとは挙動が違いますね。