Bird
Raised Fist0
Javascriptprogramming~20 mins

Module scope in Javascript - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Module Scope Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of variable inside and outside module
Consider the following JavaScript module code. What will be the output when running this code in a modern ES module environment?
Javascript
const secret = 'hidden';
console.log(secret);
{
  const secret = 'inside block';
  console.log(secret);
}
console.log(secret);
A
"hidden"
"inside block"
"hidden"
B
"hidden"
"hidden"
"hidden"
CReferenceError: secret is not defined
D
"inside block"
"inside block"
"inside block"
Attempts:
2 left
💡 Hint
Think about how block scope works with const inside modules.
❓ Predict Output
intermediate
2:00remaining
Effect of top-level await on module scope
What will be the output of this ES module code snippet?
Javascript
const data = await Promise.resolve('loaded');
console.log(data);
ASyntaxError: await is only valid in async functions
B"loaded"
CReferenceError: data is not defined
DPromise { 'loaded' }
Attempts:
2 left
💡 Hint
Modern ES modules support top-level await.
🔧 Debug
advanced
2:00remaining
Why does this module variable cause an error?
This code throws an error when run as an ES module. What is the cause?
Javascript
var count = 0;
function increment() {
  count++;
}
export { increment };
console.log(count);
increment();
console.log(count);
ANo error; output is 0 then 1
BReferenceError because 'count' is not exported
CSyntaxError due to missing export of 'count'
DNo error; output is 0 then 0
Attempts:
2 left
💡 Hint
Variables inside a module are private unless exported, but accessible within the module.
❓ Predict Output
advanced
2:00remaining
Module scope and global scope interaction
What will be the output of this code when run as an ES module?
Javascript
globalThis.value = 10;
const value = 20;
console.log(value);
console.log(globalThis.value);
A
20
20
B
10
20
CReferenceError: value is not defined
D
20
10
Attempts:
2 left
💡 Hint
Module scope variables do not affect globalThis unless explicitly assigned.
🧠 Conceptual
expert
2:00remaining
Why does this module code not pollute global scope?
In ES modules, variables declared at the top level do not become global variables. Why is this behavior important?
AIt makes variables accessible from any script on the page automatically.
BIt forces all variables to be exported explicitly.
CIt prevents accidental overwriting of global variables and keeps modules self-contained.
DIt disables variable declarations outside functions.
Attempts:
2 left
💡 Hint
Think about how large projects avoid conflicts.

Practice

(1/5)
1. What does module scope mean in JavaScript?
easy
A. All variables are global and accessible everywhere
B. Variables and functions are private to the file unless exported
C. Functions can only be used inside loops
D. Variables must be declared with var only

Solution

  1. Step 1: Understand module scope concept

    Module scope means code inside a file is private unless explicitly shared.
  2. Step 2: Compare options with this concept

    Only Variables and functions are private to the file unless exported correctly states variables/functions are private unless exported.
  3. Final Answer:

    Variables and functions are private to the file unless exported -> Option B
  4. Quick Check:

    Module scope = private unless exported [OK]
Hint: Remember: module code is private unless exported [OK]
Common Mistakes:
  • Thinking all variables are global
  • Confusing module scope with block scope
  • Believing functions must be inside loops
2. Which of the following is the correct way to export a function named greet from a module?
easy
A. export function greet() {}
B. function export greet() {}
C. export greet() {}
D. export = greet()

Solution

  1. Step 1: Recall correct export syntax

    To export a function, use export function functionName() {}.
  2. Step 2: Check each option

    export function greet() {} matches the correct syntax; others are invalid or incorrect.
  3. Final Answer:

    export function greet() {} -> Option A
  4. Quick Check:

    Export function syntax = export function name() [OK]
Hint: Use 'export function' before function name [OK]
Common Mistakes:
  • Placing export after function keyword
  • Using incorrect export assignment syntax
  • Missing parentheses in function declaration
3. Given this module code:
const secret = 42;
export const visible = 'hello';

console.log(typeof secret);
console.log(typeof visible);

What is the output when this module runs?
medium
A. "number" and "string"
B. "undefined" and "string"
C. "number" and "undefined"
D. ReferenceError for secret

Solution

  1. Step 1: Understand variable scope and export

    Both secret and visible exist inside the module; secret is private, visible is exported.
  2. Step 2: Check typeof outputs inside the same module

    Inside the module, both variables exist, so typeof secret is "number" and typeof visible is "string".
  3. Final Answer:

    "number" and "string" -> Option A
  4. Quick Check:

    typeof secret = number, typeof visible = string [OK]
Hint: Inside module, all declared variables exist [OK]
Common Mistakes:
  • Thinking private variables are undefined inside module
  • Confusing export with variable existence
  • Expecting ReferenceError inside same file
4. What is wrong with this module code?
const count = 10;
export count = 20;
medium
A. Cannot export a variable twice
B. count is not declared before export
C. Syntax error: export cannot be used with assignment
D. No error, code works fine

Solution

  1. Step 1: Analyze export syntax

    Export keyword cannot be used with assignment like export count = 20;. It must be export const count = 20; or export existing variables.
  2. Step 2: Identify error type

    This causes a syntax error because export expects declaration or named export, not assignment.
  3. Final Answer:

    Syntax error: export cannot be used with assignment -> Option C
  4. Quick Check:

    Export syntax must declare or export existing variables [OK]
Hint: Export must declare or export, not assign [OK]
Common Mistakes:
  • Trying to export by assignment
  • Missing const/let/var with export
  • Assuming export can change variable value
5. You have two modules:
// file1.js
const secret = 'hidden';
export const data = 123;

// file2.js
import { data } from './file1.js';
console.log(secret);
console.log(data);

What will happen when file2.js runs?
hard
A. Logs undefined and 123
B. Logs 'hidden' and 123
C. SyntaxError due to import
D. ReferenceError: secret is not defined

Solution

  1. Step 1: Understand module scope and imports

    The variable secret is private to file1.js and not exported, so it cannot be accessed in file2.js.
  2. Step 2: Predict runtime behavior

    Trying to access secret in file2.js causes a ReferenceError. The imported data logs correctly.
  3. Final Answer:

    ReferenceError: secret is not defined -> Option D
  4. Quick Check:

    Private variables cause ReferenceError outside module [OK]
Hint: Only exported variables are accessible in other modules [OK]
Common Mistakes:
  • Assuming private variables are imported automatically
  • Confusing import syntax errors with runtime errors
  • Expecting undefined instead of ReferenceError
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard