1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-02 15:32:13 +00:00

LibJS: Implement a very hackish "arguments" object

We now lazily create an "arguments" array inside functions when code
tries to access it.

This doesn't follow the spec at all but still covers a lot of the
basic uses of arguments, i.e "arguments.length" and "arguments[n]"
This commit is contained in:
Andreas Kling 2020-12-05 16:38:29 +01:00
parent e6dadd9e5b
commit cc14b5a6d7
4 changed files with 39 additions and 0 deletions

View file

@ -0,0 +1,16 @@
test("basic arguments object", () => {
function foo() {
return arguments.length;
}
expect(foo()).toBe(0);
expect(foo(1)).toBe(1);
expect(foo(1, 2)).toBe(2);
expect(foo(1, 2, 3)).toBe(3);
function bar() {
return arguments[1];
}
expect(bar("hello", "friends", ":^)")).toBe("friends");
expect(bar("hello")).toBe(undefined);
});