javascript エラー「Uncaught TypeError: window[(xxx)] is not a function」の解決方法

javascript エラー「Uncaught TypeError: window[(xxx)] is not a function」の解決方法

javascriptで、エラー「Uncaught TypeError: window[(xxx)] is not a function」が発生した場合の原因と解決方法を記述してます。

環境

  • OS windows11 pro 64bit
  • ブラウザ chrome 103.0.5060.134

エラー内容

以下の、関数名を変数として利用するため「window」オブジェクトを利用したコードを実行時に発生。

let fn_1 = () => {
  console.log('fn1');
}

let fn_2 = () => {
  console.log('fn2');
}

for (let i = 1; i < 3; i++) {
   window['fn_'+i]()
}

エラーメッセージ

Uncaught TypeError: window[("fn_" + i)] is not a function

画像

firefox102の場合も同じエラーが発生します。

Uncaught TypeError: window[("fn_" + i)] is not a function

画像

原因

アロー関数に対して「window[]」は使用できないため

解決方法

通常の関数を使用するか、

function fn_1(){
  console.log('fn1');
}

function fn_2(){
  console.log('fn2');
}

for (let i = 1; i < 3; i++) {
   window['fn_'+i]()
}

一旦、配列化して利用する

let fn_1 = () => {
  console.log('fn1');
}

let fn_2 = () => {
  console.log('fn2');
}

const arr = [fn_1,fn_2]

for (let i = 0; i < 2; i++) {
    arr[i]()
}

実行結果