···11+// Test Function constructor
22+// This tests whether the Function constructor can create a dynamic function
33+// from string arguments.
44+//
55+// The Function constructor syntax:
66+// new Function(arg1, arg2, ..., argN, functionBody)
77+// All arguments are strings. The last argument is the function body,
88+// and all previous arguments are parameter names.
99+1010+console.log('=== Testing Function Constructor ===\n');
1111+1212+// Test 1: Basic two-parameter function
1313+console.log('Test 1: Basic addition function');
1414+let sum = new Function('a', 'b', 'return a + b');
1515+console.log(' Created function:', sum);
1616+console.log(' typeof sum:', typeof sum);
1717+console.log(' sum(1, 2):', sum(1, 2), '(expected: 3)');
1818+1919+// Test 2: No parameters
2020+console.log('\nTest 2: Function with no parameters');
2121+let hello = new Function('return "Hello World"');
2222+console.log(' hello():', hello(), '(expected: "Hello World")');
2323+2424+// Test 3: Single parameter
2525+console.log('\nTest 3: Single parameter function');
2626+let square = new Function('x', 'return x * x');
2727+console.log(' square(5):', square(5), '(expected: 25)');
2828+2929+// Test 4: Multiple statements in body
3030+console.log('\nTest 4: Multiple statements in body');
3131+let multi = new Function('x', 'let y = x * 2; return y + 1');
3232+console.log(' multi(5):', multi(5), '(expected: 11)');
3333+3434+// Test 5: Access to global scope
3535+console.log('\nTest 5: Access to global scope variables');
3636+let factor = 10;
3737+let multiply = new Function('x', 'return x * factor');
3838+console.log(' multiply(5):', multiply(5), '(expected: 50)');
3939+4040+// Test 6: Empty function body
4141+console.log('\nTest 6: Empty function body');
4242+let empty = new Function('');
4343+console.log(' empty():', empty(), '(expected: undefined)');
4444+4545+// Test 7: Many parameters
4646+console.log('\nTest 7: Function with three parameters');
4747+let add3 = new Function('a', 'b', 'c', 'return a + b + c');
4848+console.log(' add3(1, 2, 3):', add3(1, 2, 3), '(expected: 6)');
4949+5050+// Test 8: String concatenation
5151+console.log('\nTest 8: String concatenation');
5252+let greet = new Function('name', 'return "Hello, " + name + "!"');
5353+console.log(' greet("World"):', greet("World"), '(expected: "Hello, World!")');
5454+5555+console.log('\n=== All Function Constructor Tests Complete ===');