Corredor

ウェブ、プログラミングの勉強メモ。

JavaScript の関数を短縮しようとしたら Illegal invocation が出た

ブックマークレットを作るため、以下のように関数を別変数にしたら短縮して書けるんじゃないかな?と思って書いてみたところ、Illegal invocation なるエラーが出た。

const getId = document.getElementById;

// → Uncaught TypeError: Illegal invocation エラーが発生する

これは何なのかというと、ネイティブ関数の別参照を作ってはならないというエラーらしい。

直接ネイティブ関数の参照を作らなければ良いので、ラップした関数とかであれば当然問題ない。

const getId = id => document.getElementById(id);

// 以下と同義
const getId = function(id) {
  return document.getElementById(id);
};

知らなんだ〜〜。

JavaScript 第6版

JavaScript 第6版