--- id: 56533eb9ac21ba0edf2244be title: Global Scope and Functions challengeType: 1 videoUrl: 'https://scrimba.com/c/cQM7mCN' forumTopicId: 18193 --- ## Description
In JavaScript, scope refers to the visibility of variables. Variables which are defined outside of a function block have Global scope. This means, they can be seen everywhere in your JavaScript code. Variables which are used without the var keyword are automatically created in the global scope. This can create unintended consequences elsewhere in your code or when running a function again. You should always declare your variables with var.
## Instructions
Using var, declare a global variable myGlobal outside of any function. Initialize it with a value of 10. Inside function fun1, assign 5 to oopsGlobal without using the var keyword.
## Tests
```yml tests: - text: myGlobal should be defined testString: assert(typeof myGlobal != "undefined"); - text: myGlobal should have a value of 10 testString: assert(myGlobal === 10); - text: myGlobal should be declared using the var keyword testString: assert(/var\s+myGlobal/.test(code)); - text: oopsGlobal should be a global variable and have a value of 5 testString: assert(typeof oopsGlobal != "undefined" && oopsGlobal === 5); ```
## Challenge Seed
```js // Declare your variable here function fun1() { // Assign 5 to oopsGlobal Here } // Only change code above this line function fun2() { var output = ""; if (typeof myGlobal != "undefined") { output += "myGlobal: " + myGlobal; } if (typeof oopsGlobal != "undefined") { output += " oopsGlobal: " + oopsGlobal; } console.log(output); } ```
### Before Test
```js var logOutput = ""; var originalConsole = console function capture() { var nativeLog = console.log; console.log = function (message) { logOutput = message; if(nativeLog.apply) { nativeLog.apply(originalConsole, arguments); } else { var nativeMsg = Array.prototype.slice.apply(arguments).join(' '); nativeLog(nativeMsg); } }; } function uncapture() { console.log = originalConsole.log; } var oopsGlobal; capture(); ```
### After Test
```js fun1(); fun2(); uncapture(); (function() { return logOutput || "console.log never called"; })(); ```
## Solution
```js // Declare your variable here var myGlobal = 10; function fun1() { // Assign 5 to oopsGlobal Here oopsGlobal = 5; } // Only change code above this line function fun2() { var output = ""; if(typeof myGlobal != "undefined") { output += "myGlobal: " + myGlobal; } if(typeof oopsGlobal != "undefined") { output += " oopsGlobal: " + oopsGlobal; } console.log(output); } ```