Помогите понять глобальные методы борьбы с выбросами javascript

Из DailyJS «Давайте создадим JavaScript Framework» Я не совсем уверен в следующем коде, который, очевидно, используется в качестве глобального метода борьбы с выбросами.

Я пока не понимаю (function () {}). Я понимаю, что настраиваю переменную Тьюринга, устанавливаю global.turing на turing и возвращаю либо окно, либо это (если не в браузере), но (function (global) {}) (this или window) меня смущает ... Я видел такие вещи, как

var mything = {} и настройку всего вашего кода под mything, но эта идиома меня немного смущает.

Я действительно хочу понять рассуждения здесь, а не запоминать это " работает "

(function(global) {
  var turing = {
    VERSION: '0.0.1',
    lesson: 'Part 1: Library Architecture'
  };

  if (global.turing) {
    throw new Error('turing has already been defined');
  } else {
    global.turing = turing;
  }
})(typeof window === 'undefined' ? this : window);

7
задан Oded 15 March 2011 в 22:39
поделиться