Lambdaカクテル

ソフトウェア開発者です.玉石混淆です.

Array.prototype.find()でハマった

AngularJSとKarmaで艦これブラウザもどきのテストを書いていたところ、どうしてもテストで通らない箇所があった。ある配列からある条件をクリアする要素を抽出するという、非常に単純な処理だったが、メソッドundefinedになっていて落ちてしまう。この挙動に悩まされて数日経過した挙句にようやく、このメソッドはexperimentalで未実装の場合があるということを知ったのであった。

奴の名はArray.prototype.find。真偽値を返す関数を与えると、最初に条件をクリアした要素を返すという関数だ。僕はこれが実験的機能であることをさっぱり見落したまま実装にfindを使ってしまっていたのだ。今思い返してみると、あのメソッドのリファレンスページだけ何故か和訳されていないのに気付いた時点で何かおかしいぞと疑うべきであった。

教訓

  • きちんと実装されたメソッドを使え。
  • 調べてから実装しろ。使い方を知らない関数/メソッドは使うな。
  • テストと実装の両方に疑義が生じた場合、実装をまず疑え。
  • 人間の介在そのものが最大のバグである。