string-ident-to-not-string-var-equality.js   [plain text]


function foo(a, b) {
    return a === b;
}

function bar(a, b) {
    return b === a;
}

function test(a, b, expected) {
    var fooActual = foo(a, b);
    var barActual = bar(a, b);
    
    if (fooActual != expected)
        throw new Error("Bad result: " + fooActual);
    if (barActual != expected)
        throw new Error("Bad result: " + barActual);
}

for (var i = 0; i < 10000; ++i) {
    test("foo", "foo", true);
    test("foo", "bar", false);
    test("fuz", 42, false);
    test("buz", {}, false);
    test("bla", null, false);
}

var fooString = "";
fooString += "f";
for (var i = 0; i < 2; ++i)
    fooString += "o";

test(fooString, "foo", true);