【JavaScript】関数名をclose()にするのは気をつけろ
BRANK
単なる自分のやらかしの共有です。この記事は事実をもとにしたフィクションです。消し忘れたclose()関数あるときモーダルコンポーネントを閉じる、close()関数というのを作りました。後日、リファクタリングをするとき、とあるコンポーネントからclose()関数が取り除かれることになりました。しかし誤って1つ削除し忘れてしまい、close()関数が取り残されてしまいます。このとき、import文なども取り除かれたのですが、何故か未定義エラーなどは出ずに見過ごされてしまいました。(察しの良い人はピンとくるかも)何故か消えるウィンドウそんな中、消し忘れたコンポーネントを含む画面で特定の手順を踏むと開いたブラウザウィンドウが閉じてしまう現象が確認されるようになりました。どうやら発生源は先程のリファクタリング作業らしい…window.closeというJavaScriptの組込み関数この不具合の原因はJavaScriptのwindowオブジェクトに生えているclose()組込み関数です。windowオブジェクトは省略可能なため、close()単体でもwindow.close()関数が実行されます。そのため先程の消し忘れた関数はそのまま組込み関数のclose()関数として解釈され、エラーにもならずブラウザウィ…