--- id: 56533eb9ac21ba0edf2244bf title: Local Scope and Functions challengeType: 1 videoUrl: 'https://scrimba.com/c/cd62NhM' forumTopicId: 18227 --- ## Description
Variables which are declared within a function, as well as the function parameters have local scope. That means, they are only visible within that function. Here is a function myTest with a local variable called loc. ```js function myTest() { var loc = "foo"; console.log(loc); } myTest(); // logs "foo" console.log(loc); // loc is not defined ``` loc is not defined outside of the function.
## Instructions
Declare a local variable myVar inside myLocalScope. Run the tests and then follow the instructions commented out in the editor. Hint
Refreshing the page may help if you get stuck.
## Tests
```yml tests: - text: No global myVar variable testString: assert(typeof myVar === 'undefined'); - text: Add a local myVar variable testString: assert(/function\s+myLocalScope\s*\(\s*\)\s*\{\s[\s\S]+\s*var\s*myVar\s*(\s*|=[\s\S]+)\s*;[\s\S]+}/.test(code)); ```
## Challenge Seed
```js function myLocalScope() { 'use strict'; // you shouldn't need to edit this line console.log(myVar); } myLocalScope(); // Run and check the console // myVar is not defined outside of myLocalScope console.log(myVar); // Now remove the console log line to pass the test ```
### 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; } ```
### After Test
```js typeof myLocalScope === 'function' && (capture(), myLocalScope(), uncapture()); (function() { return logOutput || "console.log never called"; })(); ```
## Solution
```js function myLocalScope() { 'use strict'; var myVar; console.log(myVar); } myLocalScope(); ```