JavaScript の window オブジェクトに登録した関数を削除する

window に登録した関数(つまりグローバル関数)を削除するには、delete 演算子を使う。ただし、いくつかの注意点がある。

// 登録
window.myFunction = function() {
console.log('test')
}

// 呼び出し
myFunction() // → test

// 削除
delete window.myFunction

// 確認
console.log(typeof myFunction) // → "undefined"

注意点

let や const で定義した関数は削除できない(delete は無効)
var または window.xxx = 形式で定義した場合のみ削除可能
Strict モードでは delete が失敗するとエラーになる

つまり、グローバルスコープにある関数でも、どのように定義したかによって削除できるかが決まる。

// 削除できない例
function test() {}
delete window.test // false(削除されない)

// 削除できる例
window.test = function() {}
delete window.test // true(削除される)

このように、function 宣言ではなく プロパティとして代入した関数 であれば delete で安全に消せる。