Keep a variable local to the function that declares it.

function-scope A variable declared inside a function is local to that function. Only the returned value escapes; the local stays private.

Function Scope

start
function_scope.js
Replay: real traced execution (multi-file project)
function compute(base) {
  const local = base + 1;
  return local * 2;
}

const start = 5;
const result = compute(start);

console.log("start=" + start);
console.log("result=" + result);
function compute(base) {
  const local = base + 1;
  return local * 2;
}

const start = 3;
const result = compute(start);

console.log("start=" + start);
console.log("result=" + result);
function compute(base) {
  const local = base + 1;
  return local * 2;
}

const start = 10;
const result = compute(start);

console.log("start=" + start);
console.log("result=" + result);
  1. start ← 5

    3  return local * 2;4}56const start→ 5 = 5; //@start=3, 107const result = compute(start5);
  2. local ← 6, base ← 5

    1function compute(base5) {2  const local→ 6 = base→ 5 + 1;3  return local * 2;4}
  3. result ← 12

    6const start = 5; //@start=3, 107const result→ 12 = compute(start5);89console.log("start=" + start5);10console.log("result=" + result12);
    outputstart=5
    result=12
  1. start ← 3

    3  return local * 2;4}56const start→ 3 = 3;7const result = compute(start3);
  2. local ← 4, base ← 3

    1function compute(base3) {2  const local→ 4 = base→ 3 + 1;3  return local * 2;4}
  3. result ← 8

    6const start = 3;7const result→ 8 = compute(start3);89console.log("start=" + start3);10console.log("result=" + result8);
    outputstart=3
    result=8
  1. start ← 10

    3  return local * 2;4}56const start→ 10 = 10;7const result = compute(start10);
  2. local ← 11, base ← 10

    1function compute(base10) {2  const local→ 11 = base→ 10 + 1;3  return local * 2;4}
  3. result ← 22

    6const start = 10;7const result→ 22 = compute(start10);89console.log("start=" + start10);10console.log("result=" + result22);
    outputstart=10
    result=22