Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Global variables in JavaScript strict mode

A simple Javascript question, For instance I have an Angular app.js like this;

'use strict';

 var eventsApp = angular.module('eventsApp',[]);

I read that using "use strict" in beginning of a Javascript file makes all vars in that file to be treated in strict mode, which means will it throw an error when you use a global variable(?), but then how can we access that "eventApp" object from all our controllers and services if that's not in global scope?

like image 474
Spring Avatar asked Jul 31 '13 08:07

Spring


1 Answers

The faulty assumption is that in strict mode all global variables are disallowed. Actually only undefined global variables throw an error. (In fact you basically couldn't do anything at all if you couldn't use any global variables. There has to be at least something in the global scope.)

For example:

"use strict";

var a = "foo";
var b;

(function() {
    a = "bar";  // this is ok, initialized earlier
    b = "baz";  // this is also ok, defined earlier
    c = "qux";  // this is not, creating an implicit global
})();

Using variables a or b is not a problem, but c will throw an error. There should be no problems using the eventApp variable in your example.

like image 136
JJJ Avatar answered Sep 17 '22 16:09

JJJ