Source code

Revision control

Copy as Markdown

Other Tools

function basic() {
assertEq("a".at(0), "a");
assertEq("a".at(-1), "a");
assertEq("".at(0), undefined);
assertEq("".at(-1), undefined);
assertEq("".at(1), undefined);
assertEq("ab".at(0), "a");
assertEq("ab".at(1), "b");
assertEq("ab".at(-2), "a");
assertEq("ab".at(-1), "b");
assertEq("ab".at(2), undefined);
assertEq("ab".at(-3), undefined);
assertEq("ab".at(-4), undefined);
assertEq("ab".at(Infinity), undefined);
assertEq("ab".at(-Infinity), undefined);
assertEq("ab".at(NaN), "a"); // ToInteger(NaN) = 0
assertEq("\u{1f921}".at(0), "\u{d83e}");
assertEq("\u{1f921}".at(1), "\u{dd21}");
}
function other() {
var n = 146;
assertEq(String.prototype.at.call(n, 0), "1");
var obj = {};
assertEq(String.prototype.at.call(obj, -1), "]");
var b = true;
assertEq(String.prototype.at.call(b, 0), "t");
}
basic();
other();
if (typeof reportCompare === "function")
reportCompare(true, true);