Values, Types, and Expressions
Let and Const
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
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);
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
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
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
countstarts at1.stepis2.count = count + stepchangescountto3.labelbecomescount:3.- The program prints
step=2,count=3, andlabel=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.