Знали ли Вы что интерпретатор javascript наделен механизмом подстановки точки с запятой в конце каждой строки. Причем этот механизм работает за Вашей спиной. Поэтому, там где это должны сделать Вы, то и делайте это сами, так как тут можно столкнуться с необычными результатами. Рассмотрим пример. Напишем функцию-выражение, которая будет возвращать простой объект:
var object = function (name) {
return
{
name: name || ''
};
};
Вроде ничего такого. Но это на первый взгляд. Попробуйте получить от нее обещанный объект:
var obj = object('Leonardo'); // undefined
И если мы заглянем в этот объект, то окажется, что он не определен (возвращается undefined результат). Это связано с тем самым механизмом авто подстановки, которое после return ставит те самые точку с запятой. И в итоге неопределенное значение. Поэтому, чтобы пример отработал как положено, необходимо немного ее видоизменить:
var object = function (name) {
return {
name: name || ''
};
};
Теперь все работает :)