When They "feel" the Same - Code - Part 2

What’s the Difference Between Scope and Context in JavaScript? When Scope and Context "feel" like the same thing (but they are not)
4 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$99.99
List Price:  $139.99
You save:  $40
€93.59
List Price:  €131.03
You save:  €37.43
£80.45
List Price:  £112.64
You save:  £32.18
CA$136.81
List Price:  CA$191.54
You save:  CA$54.73
A$153.85
List Price:  A$215.39
You save:  A$61.54
S$136.10
List Price:  S$190.55
You save:  S$54.44
HK$783.19
List Price:  HK$1,096.50
You save:  HK$313.30
CHF 91.41
List Price:  CHF 127.98
You save:  CHF 36.57
NOK kr1,095.33
List Price:  NOK kr1,533.51
You save:  NOK kr438.17
DKK kr697.93
List Price:  DKK kr977.13
You save:  DKK kr279.20
NZ$168.49
List Price:  NZ$235.89
You save:  NZ$67.40
د.إ367.25
List Price:  د.إ514.16
You save:  د.إ146.91
৳10,960.96
List Price:  ৳15,345.79
You save:  ৳4,384.82
₹8,331.14
List Price:  ₹11,663.93
You save:  ₹3,332.78
RM477.70
List Price:  RM668.80
You save:  RM191.10
₦126,037.39
List Price:  ₦176,457.39
You save:  ₦50,420
₨27,728.08
List Price:  ₨38,820.43
You save:  ₨11,092.34
฿3,701.79
List Price:  ฿5,182.66
You save:  ฿1,480.86
₺3,251.67
List Price:  ₺4,552.47
You save:  ₺1,300.80
B$513.17
List Price:  B$718.47
You save:  B$205.29
R1,913.51
List Price:  R2,678.99
You save:  R765.48
Лв183.04
List Price:  Лв256.26
You save:  Лв73.22
₩137,500.16
List Price:  ₩192,505.72
You save:  ₩55,005.56
₪376.08
List Price:  ₪526.53
You save:  ₪150.44
₱5,758.67
List Price:  ₱8,062.37
You save:  ₱2,303.69
¥15,492.10
List Price:  ¥21,689.56
You save:  ¥6,197.46
MX$1,697.24
List Price:  MX$2,376.20
You save:  MX$678.96
QR362.79
List Price:  QR507.92
You save:  QR145.13
P1,387.12
List Price:  P1,942.02
You save:  P554.90
KSh13,448.65
List Price:  KSh18,828.65
You save:  KSh5,380
E£4,787.02
List Price:  E£6,702.02
You save:  E£1,915
ብር5,664.26
List Price:  ብር7,930.19
You save:  ብር2,265.93
Kz83,485.81
List Price:  Kz116,883.48
You save:  Kz33,397.66
CLP$95,360.46
List Price:  CLP$133,508.46
You save:  CLP$38,148
CN¥724.53
List Price:  CN¥1,014.38
You save:  CN¥289.84
RD$5,902.47
List Price:  RD$8,263.69
You save:  RD$2,361.22
DA13,439.62
List Price:  DA18,816
You save:  DA5,376.38
FJ$229.29
List Price:  FJ$321.01
You save:  FJ$91.72
Q776.47
List Price:  Q1,087.09
You save:  Q310.61
GY$20,894.43
List Price:  GY$29,253.04
You save:  GY$8,358.61
ISK kr14,065.59
List Price:  ISK kr19,692.39
You save:  ISK kr5,626.80
DH1,009.26
List Price:  DH1,413.01
You save:  DH403.74
L1,779.82
List Price:  L2,491.82
You save:  L712
ден5,758.50
List Price:  ден8,062.13
You save:  ден2,303.63
MOP$806.12
List Price:  MOP$1,128.60
You save:  MOP$322.48
N$1,913.23
List Price:  N$2,678.60
You save:  N$765.36
C$3,661.78
List Price:  C$5,126.64
You save:  C$1,464.86
रु13,321.12
List Price:  रु18,650.11
You save:  रु5,328.98
S/368.06
List Price:  S/515.29
You save:  S/147.23
K378.12
List Price:  K529.39
You save:  K151.26
SAR375.03
List Price:  SAR525.05
You save:  SAR150.02
ZK2,574.10
List Price:  ZK3,603.84
You save:  ZK1,029.74
L465.65
List Price:  L651.93
You save:  L186.28
Kč2,362.20
List Price:  Kč3,307.17
You save:  Kč944.97
Ft36,810.41
List Price:  Ft51,536.04
You save:  Ft14,725.63
SEK kr1,086.49
List Price:  SEK kr1,521.13
You save:  SEK kr434.64
ARS$87,266.68
List Price:  ARS$122,176.84
You save:  ARS$34,910.16
Bs687.45
List Price:  Bs962.46
You save:  Bs275.01
COP$390,268.69
List Price:  COP$546,391.78
You save:  COP$156,123.08
₡50,117.34
List Price:  ₡70,166.29
You save:  ₡20,048.94
L2,455.43
List Price:  L3,437.70
You save:  L982.27
₲738,156.27
List Price:  ₲1,033,448.32
You save:  ₲295,292.04
$U3,836.09
List Price:  $U5,370.68
You save:  $U1,534.59
zł404.46
List Price:  zł566.27
You save:  zł161.80
Already have an account? Log In

Transcript

Now let's look at example see the one that says, What is this? So I've got this function foo again. And inside of foo, I create a variable. So this is good. I'm using the var keyword again, which I think is better. So I'm creating a private variable inside of foo.

So speed is private to this function. And I alert this start speed. Okay. And then I execute through so we should get an alert. But the question is, what will be the value that we see in the alert? That's the question.

So let's try it. Let's copy this code, and go to JavaScript console, paste that code in and when you execute the code we see undefined, huh? So the alerts, this dot speed is undefined. All right, let's see if we can figure out what's going on. Well, once again, we have this private variable speed, and we alert this dot speed. Well, when I see something, that's something I think object property.

So this thought speech is not the same thing as speed because if we wanted speed, we would just get speed. But we don't get speed, we get undefined. And we're not alerting speed. We're learning this dot speed. So, as we've talked about many times in this class, that JavaScript, this keyword refers to the object to which a method belongs. Well, this foo function isn't really a method, or is it?

Maybe it is. Let's copy this code again. And let's execute the code. And then let's see what happens if we type foo. Hmm. So if I just type foo in my console, I get looks like the code from our function, it looks exactly the same as the code from our function.

Well turns out that and if I type window dot foo, I get the code from our function. So it turns out the Foo is a property of the window object and The reason is because we're declaring foo in the global scope right here, we're in the global scope, we're not inside of a function where we're inside of a function here on line 26, or 28. But the actual function declaration of foo on line 25 is in the global scope. So when we create a global function, we're creating a global variable. And as we discussed a few minutes ago, a global variable is also a property of the window object. So right now foo is a property of the window object.

Okay? So that means that the this keyword refers to the window object. So when I say this dot speed, I'm asking for the speed property of the window object. So alert, this dot speed will do the exact same thing as saying alert window dot speed lines. 2829 are exactly the same. They're the exact same thing.

So the situation is we don't have a speed property on window. Now. In this example in the previous example we did but here we don't, because this speed is private. Right there in line 26, that's a private speed, but window dot speed doesn't exist. And if I were to come up here and say, var speed equals, let's say 5000. So copy this code, and refresh the page.

And I'm going to paste that code in. And now I see 5000. How do I see 5000? Well, the reason is because now we create a global variable called speed. This dot speed equals this.is window dot speed. So window dot speed, the global speed is 5000.

So in this case, we get a value which is which is good, but the original question did not involve a global speed variable. So in this case, on line 28, this dot speed or window dot speed is undefined. We never defined a window dot speed, and that means the alert on 28 produces undefined there is no window to be proper

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.