Skip to content

Commit 5c39a47

Browse files
Fix 3.js: convert cardNumber to string so slice works, add explanation
1 parent 19c93a0 commit 5c39a47

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

  • Sprint-2/2-mandatory-errors

‎Sprint-2/2-mandatory-errors/3.js‎

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
1-
const cardNumber = 4533787178994213;
1+
const cardNumber = "4533787178994213";
22
const last4Digits = cardNumber.slice(-4);
33

4-
// The last4Digits variable should store the last 4 digits of cardNumber
5-
// However, the code isn't working
6-
// Before running the code, make and explain a prediction about why the code won't work
7-
// Then run the code and see what error it gives.
8-
// Consider: Why does it give this error? Is this what I predicted? If not, what's different?
9-
// Then try updating the expression last4Digits is assigned to, in order to get the correct value
4+
// PREDICTION: This code will result in a TypeError because cardNumber is a number,
5+
// and numbers don't have a .slice() method (it only exists on strings).
6+
//
7+
// ACTUAL ERROR: TypeError: cardNumber.slice is not a function (at 3.js:2:32)
8+
// Was my prediction correct? YES — it was indeed a TypeError caused by calling
9+
// a string method on a number.
10+
//
11+
// Fix: Make cardNumber a string by wrapping it in quotes: "4533787178994213".
12+
// (Card numbers should be strings in real life — they can have leading zeros
13+
// and are too large for the Number type.)
14+
15+
console.log(last4Digits);

0 commit comments

Comments
 (0)