--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 declared without the let
or const
keywords 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 let
or const
.
--instructions--
Using let
or const
, declare a global variable named myGlobal
outside of any function. Initialize it with a value of 10
.
Inside function fun1
, assign 5
to oopsGlobal
without using the var
, let
or const
keywords.
--hints--
myGlobal
should be defined
assert(typeof myGlobal != 'undefined');
myGlobal
should have a value of 10
assert(myGlobal === 10);
myGlobal
should be declared using the let
or const
keywords
assert(/(let|const)\s+myGlobal/.test(__helpers.removeJSComments(code)));
oopsGlobal
should be a global variable and have a value of 5
assert(typeof oopsGlobal != 'undefined' && oopsGlobal === 5);
--seed--
--before-user-code--
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-user-code--
fun1();
fun2();
uncapture();
(function() { return logOutput || "console.log never called"; })();
--seed-contents--
// Declare the myGlobal variable below this line
function fun1() {
// Assign 5 to oopsGlobal here
}
// Only change code above this line
function fun2() {
let output = "";
if (typeof myGlobal != "undefined") {
output += "myGlobal: " + myGlobal;
}
if (typeof oopsGlobal != "undefined") {
output += " oopsGlobal: " + oopsGlobal;
}
console.log(output);
}
--solutions--
const myGlobal = 10;
function fun1() {
oopsGlobal = 5;
}
function fun2() {
let output = "";
if(typeof myGlobal != "undefined") {
output += "myGlobal: " + myGlobal;
}
if(typeof oopsGlobal != "undefined") {
output += " oopsGlobal: " + oopsGlobal;
}
console.log(output);
}