[JavaScript] 理由:Uncaught TypeError: Object [hoge] has no method replace

1 min read
hiroweb developer
Uncaught TypeError: Object [hoge] has no method 'replace'

状況

"."や"-"を取り除く関数を実行した際に発生

function trimSymbol(numStr) {
  return numStr.replace(/./g, "").replace(/-/, "");
}

理由

Object に対して、String のreplace()を使用した事が原因。
前述のコードだとnumStrが String ではなく Object だった。

参考: String.prototype.replace() - JavaScript | MDN:

解決方法

String 型に変換するか、String 型以外は弾くような処理をする必要がある。

単純な解決方法は以下。

function trimSymbol(num) {
  return String(num).replace(/./g, "").replace(/-/, "");
}

やはり万全を期して、型チェックをしてから確認を行うべき。