Choose between a reassignable let and a fixed const.

let-const Use `let` for a binding that will change and `const` for one that stays fixed. Reassigning a `let` updates the value the next expressions see.

Let and Const

count
let_const.js
Replay: real traced execution (multi-file project)
let count = 1;
const step = 2;
count = count + step;
const label = "count:" + count;

console.log("step=" + step);
console.log("count=" + count);
console.log("label=" + label);
let count = 5;
const step = 2;
count = count + step;
const label = "count:" + count;

console.log("step=" + step);
console.log("count=" + count);
console.log("label=" + label);
let count = 10;
const step = 2;
count = count + step;
const label = "count:" + count;

console.log("step=" + step);
console.log("count=" + count);
console.log("label=" + label);
  1. count ← 1, step ← 2, label ← count:3

    1let count→ 1 = 1; //@count=5, 102const step→ 2 = 2;3count = count→ 3 + step2;4const label→ count:3 = "count:" + count3;56console.log("step=" + step2);7console.log("count=" + count3);8console.log("label=" + labelcount:3);
    outputstep=2
    count=3
    label=count:3
  1. count ← 5, step ← 2, label ← count:7

    1let count→ 5 = 5;2const step→ 2 = 2;3count = count→ 7 + step2;4const label→ count:7 = "count:" + count7;56console.log("step=" + step2);7console.log("count=" + count7);8console.log("label=" + labelcount:7);
    outputstep=2
    count=7
    label=count:7
  1. count ← 10, step ← 2, label ← count:12

    1let count→ 10 = 10;2const step→ 2 = 2;3count = count→ 12 + step2;4const label→ count:12 = "count:" + count12;56console.log("step=" + step2);7console.log("count=" + count12);8console.log("label=" + labelcount:12);
    outputstep=2
    count=12
    label=count:12

Follow the Update

  1. count starts at 1.
  2. step is 2.
  3. count = count + step changes count to 3.
  4. label becomes count:3.
  5. The program prints step=2, count=3, and label=count:3. | starting count | step | updated count | label | | --- | --- | --- | --- | | 1 | 2 | 3 | count:3 | | 5 | 2 | 7 | count:7 | | 10 | 2 | 12 | count:12 |

Exercise: let_const.js

Reproduce label=count:3, then use the pinned starting counts 5 and 10 to predict each updated label.