javascript エラー「Uncaught TypeError: xxx must be called on a function」の解決方法

javascript エラー「Uncaught TypeError: xxx must be called on a function」の解決方法

javascriptで、エラー「Uncaught TypeError: xxx must be called on a function」が発生した場合の原因と解決方法を記述してます。

環境

  • OS windows11 pro 64bit
  • Apache 2.4.43
  • ブラウザ chrome 107.0.5304.122

エラー内容

以下のコードを実行時に発生。

const obj = {
    prop:100,
    fn:function (){ console.log(this);}
}

const arr = [0, 1]

console.log(
  arr.forEach(obj.fn.bind)
)

エラーメッセージ

Uncaught TypeError: Bind must be called on a function

画像

firefox(バージョン107)では、以下のエラーとなります。

Uncaught TypeError: Function.prototype.bind called on incompatible target

画像

原因

「bind」の後ろに「()」がないため

解決方法

「()」をつける

const obj = {
    prop:100,
    fn:function (){ console.log(this);}
}

const arr = [0, 1]

console.log(
  arr.forEach(obj.fn.bind())
)

実行結果