123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- describe("returning from loops", () => {
- test("returning from while loops", () => {
- function foo() {
- while (true) {
- return 10;
- }
- }
- expect(foo()).toBe(10);
- });
- test("returning from do-while loops", () => {
- function foo() {
- do {
- return 10;
- } while (true);
- }
- expect(foo()).toBe(10);
- });
- test("returning from for loops", () => {
- function foo() {
- for (let i = 0; i < 5; i++) {
- return 10;
- }
- }
- expect(foo()).toBe(10);
- });
- test("returning from for-in loops", () => {
- function foo() {
- const o = { a: 1, b: 2 };
- for (let a in o) {
- return 10;
- }
- }
- expect(foo()).toBe(10);
- });
- test("returning from for-of loops", () => {
- function foo() {
- const o = [1, 2, 3];
- for (let a of o) {
- return 10;
- }
- }
- expect(foo()).toBe(10);
- });
- });
- test("cannot use return in eval", () => {
- const indirect = eval;
- expect(() => {
- eval("return 1;");
- }).toThrowWithMessage(SyntaxError, "'return' not allowed outside of a function");
- expect(() => {
- indirect("return 1;");
- }).toThrowWithMessage(SyntaxError, "'return' not allowed outside of a function");
- function foo() {
- eval("return 1;");
- }
- expect(() => {
- foo();
- }).toThrowWithMessage(SyntaxError, "'return' not allowed outside of a function");
- function bar() {
- indirect("return 1;");
- }
- expect(() => {
- bar();
- }).toThrowWithMessage(SyntaxError, "'return' not allowed outside of a function");
- });
|