After finishing this article : Lessons From A Review Of JavaScript CodeI was wondering if my namespace/** * The primary namespace object * @type {Object} * @alias BDDS */if(!window['BDDS']) {    window['BDDS'] = {};}if attached to the window, is this snippet invalid,according to the following?Problem 9Problem: The namespacing pattern used is technically invalid.Feedback: While namespacing is implemented correctly across the rest  of the application, the initial check for namespace existence is  invalid. Heres what you currently have: 1    if ( !MyNamespace ) { 2  MyNamespace = { }; 3  }The problem is that !MyNamespace will throw a ReferenceError, because  the MyNamespace variable was never declared. A better pattern would  take advantage of boolean conversion with an inner variable  declaration, as follows: 01   if ( !MyNamespace ) { 02      var MyNamespace  = { }; 03 } 04      05    //or 06 var myNamespace = myNamespace || {}; 07   08    // Although a more efficient way of doing this is: 09   //  myNamespace || ( myNamespace = {} ); 10   // jsPerf test:  http://jsperf.com/conditional-assignment 11     12    //or 13 if ( typeof  MyNamespace == undefined ) { 14   var MyNamespace = { }; 15 }This could, of course, be done in numerous other ways. If youre  interested in reading about more namespacing patterns (as well as some  ideas on namespace extension), I recently wrote Essential JavaScript  Namespacing Patterns. Juriy Zaytsev also has a pretty comprehensive  post on namespacing patterns.
Namespacing patterns
javascript
No your code is correct.!reference only throws a reference error if its not defined.window is defined and window[not_defined] just returns undefined for not defined variables.