Declaring global variables without a value

global-variables, javascript, variables

Solution

If you want to define the variables as properties of `GlobalVars` you have to explicitly assign `undefined` to them

GlobalVars: {
     globalVarA: "foo",
     globalVarB: "bar",
     globalVarC: undefined
  },

Your code contained invalid notation, when using object literal notation you must specify a value for each variable. This is unlike other notations like XML or formParams where you can declare a attribute/property without setting it.

Note, that in my solution undefined variables do get a default value - that value is just the primitive value `undefined` which is what is returned by default for variables that were not defined.

However, your variable does get defined if you do `globalVarC: undefined`

GlobalVars.globalVarC;//undefined
GlobalVars.globalVarX;//undefined
GlobalVars.hasOwnProperty("globalVarC");//true
GlobalVars.hasOwnProperty("globalVarX");//false

From the spec:

4.3.9 undefined value:

primitive value used when a variable has not been assigned a value.

Problem

I wish to create a JavaScript object with nested global variables where some of the variables will not have a default value specified. I currently have this: ``` var globalVarA = "foo"; var globalVarB = "bar"; var globalVarC; function myFunction(){ //do something } ``` I wish to change this to: ``` var myObject = { GlobalVars: { globalVarA: "foo", globalVarB: "bar", globalVarC }, myFunction: function(){ //do something } } ``` However I get the following error: Expected ':' How can I declare this variable without a value?

Original source