Я разработчик javascript среднего уровня, пытаясь понять, как великий разработчик javascript пишет свой код, и я решил начать изучать библиотеку Backbone в качестве отправной точки.
вот фрагмент кода для первоначальной настройки в магистрали, пожалуйста, помогите мне разобраться в этом.
код1-
(function(){
var root = this;
}).call(this);
есть ли какая-то конкретная причина использовать метод вызова вместо простого использования (), или это просто предпочтение кодирования, если мне нужно написать тот же код, я бы сделал что-то вроде этого.
(function(root){
})(this);
код2-
var Backbone;
if (typeof exports !== 'undefined') {
Backbone = exports;
} else {
Backbone = root.Backbone = {};
}
теперь нет определения экспорта в глобальной области, и он не определен нигде в локальной области, тогда что, если блок делает здесь, если бы я писал тот же код, что и написал бы
var Backbone = root.Backbone = {};
код 3
var _ = root._;
if (!_ && (typeof require !== 'undefined')) _ = require('underscore')._;
снова я не могу найти определение require нигде в локальной или глобальной области видимости