⚖️

Function型の変数同士の比較

2020/10/27に公開

この記事は記録のため残します。


describe("Function型の比較", function () {
  it("比較1", function () {
    var f, g;
    f = g = function () {
      return;
    };
    expect(f === g).toEqual(true);
  });

  it("比較2", function () {
    var f, g;
    f = function () {
      return;
    };
    g = function () {
      return;
    };
    expect(f === g).toEqual(false);
  });

  it("比較3", () => {
    var f, g, h, i;
    f = function () {
      return "A";
    };
    g = function () {
      return "B";
    };
    h = function () {
      return "B";
    };
    i = function () {
      return "b";
    };
    expect(String(f) === String(g)).toEqual(false);
    expect(String(g) === String(h)).toEqual(true);
    expect(String(h) === String(i)).toEqual(false);
  });
});

全て通るテストです。Function型の比較がString()を使うだけで済むなんてちょっと驚きました。


141112追記: ただし.bind()した関数は[native code]扱いになるようで、この方法は使えないようです。

Discussion