MIRROR: javascript for 馃悳's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 76 lines 2.7 kB view raw
1// Test that window/globalThis remain global inside functions 2 3console.log("=== Global Scope ==="); 4globalThis.globalVar = "I am global"; 5console.log("globalThis.globalVar:", globalThis.globalVar); 6 7console.log("\n=== Inside Regular Function ==="); 8function testRegularFunc() { 9 console.log("Inside function, globalThis.globalVar:", globalThis.globalVar); 10 console.log("Inside function, window.globalVar:", window.globalVar); 11 12 // Set a new property from inside the function 13 window.fromFunction = "set from inside function"; 14 globalThis.alsoFromFunction = "also from inside"; 15 16 // Test that window/globalThis are the same 17 console.log("Inside function, window === globalThis:", window === globalThis); 18} 19 20testRegularFunc(); 21console.log("After function, window.fromFunction:", window.fromFunction); 22console.log("After function, globalThis.alsoFromFunction:", globalThis.alsoFromFunction); 23 24console.log("\n=== Inside Arrow Function ==="); 25const testArrowFunc = () => { 26 console.log("Arrow function, globalThis.globalVar:", globalThis.globalVar); 27 console.log("Arrow function, window.globalVar:", window.globalVar); 28 window.fromArrow = "from arrow function"; 29}; 30 31testArrowFunc(); 32console.log("After arrow, window.fromArrow:", window.fromArrow); 33 34console.log("\n=== Inside Nested Function ==="); 35function outer() { 36 console.log("Outer function, globalThis.globalVar:", globalThis.globalVar); 37 38 function inner() { 39 console.log("Inner function, globalThis.globalVar:", globalThis.globalVar); 40 console.log("Inner function, window.globalVar:", window.globalVar); 41 window.fromNested = "from nested function"; 42 } 43 44 inner(); 45} 46 47outer(); 48console.log("After nested, window.fromNested:", window.fromNested); 49 50console.log("\n=== Inside Constructor ==="); 51function MyClass() { 52 console.log("Constructor, globalThis.globalVar:", globalThis.globalVar); 53 console.log("Constructor, window.globalVar:", window.globalVar); 54 console.log("Constructor, this === window:", this === window); 55 console.log("Constructor, this === globalThis:", this === globalThis); 56 window.fromConstructor = "from constructor"; 57} 58 59new MyClass(); 60console.log("After constructor, window.fromConstructor:", window.fromConstructor); 61 62console.log("\n=== Inside Method ==="); 63const obj = { 64 method: function() { 65 console.log("Method, globalThis.globalVar:", globalThis.globalVar); 66 console.log("Method, window.globalVar:", window.globalVar); 67 console.log("Method, this === window:", this === window); 68 console.log("Method, this === globalThis:", this === globalThis); 69 window.fromMethod = "from method"; 70 } 71}; 72 73obj.method(); 74console.log("After method, window.fromMethod:", window.fromMethod); 75 76console.log("\n=== All tests passed! ===");