Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   return {блок} (https://javascript.ru/forum/misc/43437-return-%7Bblok%7D.html)

Vampir3 05.12.2013 10:39

return {блок}
 
Скажите, когда и для чего используется конструкция, где после return стоит блок?
что он возвращает и как ей пользоваться?
просто
(function(){
return {1}
})();

выдает ошибку missing : after property id

спасибо.

Arramis 05.12.2013 10:56

фигурные скобки говорят о том что функция возвратит объект, в вашем случаем выдается ошибка из - за того, что для ключа 1 нету соответсвующего значения.
Без ошибок будет, например так:
(function(){
	return {
		1: 1
	}				
})();

Maxmaxmaximus3 05.12.2013 15:23

ретурн не принимает блоки, по этому будет синтаксическая ошибка.
а так, блок возвращает результат последнего выполненного выражения

ksa 05.12.2013 15:44

Цитата:

Сообщение от Maxmaxmaximus3
блок возвращает результат последнего выполненного выражения

Тут кагбе примерчик этого посмотреть ...

ksa 05.12.2013 15:50

Цитата:

Сообщение от Maxmaxmaximus3
а так, блок возвращает результат последнего выполненного выражения

Цитата:

Блок

Группировка javascript-вызовов внутри фигурных скобок
Синтаксис
{
	   statement_1
	   statement_2
	   ...
	   statement_n
	}

Аргументы
statement_1, statement_2, ..., statement_n
Вызовы внутри блока
http://javascript.ru/Blok

Про "выражения" и "возвраты результатов" ни слова... ;)

Arramis 05.12.2013 16:22

Цитата:

Сообщение от Maxmaxmaximus3 (Сообщение 284750)
ретурн не принимает блоки, по этому будет синтаксическая ошибка.
а так, блок возвращает результат последнего выполненного выражения

что значит ретурн не принимает блоки ??? ошибка из-за того, что литерал возвращаемого объекта не корреткно был написан.
Функция может возвращать все что угодно, в частности и объект (пустой или не пустой)
(function() {
   return {};
}());
зачем вводить людей в заблуждение ??

Maxmaxmaximus3 05.12.2013 17:52

Цитата:

Сообщение от Arramis
что значит ретурн не принимает блоки ???

это как ретурн принимает блоки, только наоборот, глупенький =)

Цитата:

Сообщение от ksa
Про "выражения" и "возвраты результатов" ни слова...

всему тебя учить =)
alert( eval('{1+2}') )

ивал возвращает результат последнего выражения, последнее выражение это блок, блок возвращает результат последнего выражения в нем.

Vampir3 05.12.2013 17:54

var tzdragg = function() {
	return {
		startMoving : function(evt) { 
			evt = evt || window.event;
			var posX = evt.clientX,
			posY = evt.clientY, 
			a = $('elem'),
			divTop = a.style.top,
			divLeft = a.style.left;
			divTop = divTop.replace('px','');
			divLeft = divLeft.replace('px','');
			var diffX = posX - divLeft,
			diffY = posY - divTop; 
			document.onmousemove = function(evt){ 
				evt = evt || window.event;
				var posX = evt.clientX,
				posY = evt.clientY,
				aX = posX - diffX, 
				aY = posY - diffY; 
				tzdragg.move('elem',aX,aY); 
			}
		},
		stopMoving : function() {
			document.onmousemove = function(){}
		},
		move : function(divid,xpos,ypos){
			var a = $(divid);
			$(divid).style.left = xpos + 'px';
			$(divid).style.top = ypos + 'px';
		}
	}
}();


ну вот например кусок кода для drag&drop, в котором это есть
или я чего-то не понимаю?)

Maxmaxmaximus3 05.12.2013 17:55

Vampir3, да, ты не понимаешь чем обьект отличается от блока =) все просто.

Vampir3 05.12.2013 17:55

ах, я всё понял
всё верно, это же объект


Часовой пояс GMT +3, время: 23:53.