Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.05.2016, 04:43
Новичок на форуме
Отправить личное сообщение для Acar Посмотреть профиль Найти все сообщения от Acar
 
Регистрация: 11.01.2016
Сообщений: 5

Синтаксис оператора return
Не могу понять, почему в операторе return через запятую перечисляются переменные.
Разве так можно через запятую перечислять?

function clOpinions() {
        var product = {
            restrict: "AEC",
            scope: {
                id: "=",
                opinions: "="
            },
            controller: clOpinionsCtrl,
        };
        return clOpinionsCtrl.$inject = ["$scope"], product
    }
Ответить с цитированием
  #2 (permalink)  
Старый 17.05.2016, 05:37
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Acar, так можно, а вот так нельзя
function clOpinions() {
        var product = {
            restrict: "AEC",
            scope: {
                id: "=",
                opinions: "="
            },
*!*
            controller: clOpinionsCtrl,
*/!*
        };
        return clOpinionsCtrl.$inject = ["$scope"], product
    }
Ответить с цитированием
  #3 (permalink)  
Старый 17.05.2016, 06:53
Новичок на форуме
Отправить личное сообщение для Acar Посмотреть профиль Найти все сообщения от Acar
 
Регистрация: 11.01.2016
Сообщений: 5

Сообщение от Rise Посмотреть сообщение
Acar, так можно, а вот так нельзя
Rise, что в таком случае будет возвращено функцией, то что представленно не одной, а несколькими переменными перечисленными в return через запятую?
Объект или массив..

Последний раз редактировалось Acar, 17.05.2016 в 06:58.
Ответить с цитированием
  #4 (permalink)  
Старый 17.05.2016, 06:58
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Acar, последнее значение, можно даже так
function clOpinions() {
    return clOpinionsCtrl.$inject = ["$scope"], {
        restrict: "AEC",
        scope: {
            id: "=",
            opinions: "="
        },
        controller: clOpinionsCtrl
    }
}

Последний раз редактировалось Rise, 17.05.2016 в 07:01.
Ответить с цитированием
  #5 (permalink)  
Старый 17.05.2016, 07:30
Новичок на форуме
Отправить личное сообщение для Acar Посмотреть профиль Найти все сообщения от Acar
 
Регистрация: 11.01.2016
Сообщений: 5

Сообщение от Rise Посмотреть сообщение
Acar, последнее значение, можно даже так
function clOpinions() {
    return clOpinionsCtrl.$inject = ["$scope"], {
        restrict: "AEC",
        scope: {
            id: "=",
            opinions: "="
        },
        controller: clOpinionsCtrl
    }
}
Rise, так что это будет за тип (объект, массив) возвращаемого значения, состоящий из нескольких перечисленных через запятую сущностей в операторе return?
И каким образом затем обратиться, например, к последнему из них в предложенном вами варианте return, ведь у него Вы не оставили имени?
Ответить с цитированием
  #6 (permalink)  
Старый 17.05.2016, 07:37
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

Acar,
Цитата:
так что это будет за тип (объект, массив) возвращаемого значения, состоящий из нескольких перечислееных через запятую сущностей в операторе return?
Оператор запятая вернёт последнее перечисленное значение.

В общем, я просто оставлю это здесь
https://learn.javascript.ru/operator...82%D0%B0%D1%8F

https://habrahabr.ru/post/116827/
Ответить с цитированием
  #7 (permalink)  
Старый 17.05.2016, 07:46
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Acar, тот же тип что и у последней возвращаемой сущности. Return завершает выполнение функции затем обратиться не куда не получится хоть с именем хоть без.
Ответить с цитированием
  #8 (permalink)  
Старый 17.05.2016, 08:17
Новичок на форуме
Отправить личное сообщение для Acar Посмотреть профиль Найти все сообщения от Acar
 
Регистрация: 11.01.2016
Сообщений: 5

Сообщение от Safort Посмотреть сообщение
Acar,

Оператор запятая вернёт последнее перечисленное значение.
Safort, так а какой смысл тогда в return перечислять что-либо через запятую, если все что до последней запятой все равно не возвращается функцией?
Как в моем примере, не возвращается clOpinionsCtrl
return clOpinionsCtrl.$inject = ["$scope"]

Последний раз редактировалось Acar, 17.05.2016 в 08:20.
Ответить с цитированием
  #9 (permalink)  
Старый 30.05.2016, 13:20
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от Rise Посмотреть сообщение
Return завершает выполнение функции затем обратиться не куда не получится хоть с именем хоть без.
Но есть один момент, если return находится в блоках try, catch и обращение происходит в блоке finally, тогда получится с именем.
function clOpinions() {
	var product = {
		restrict: "AEC",
		scope: {
			id: "=",
			opinions: "="
		},
		controller: clOpinionsCtrl
	};
	try {
		// return product
	} catch (e) {
		// return product
	} finally {
		// обращение к product
	}
}
Плюс если в блоке finally производится не только чтение, но и запись в product, тогда в общем случае product дожен быть объектом (не примитив), чтобы вернулись свежие данные (чтобы return вернул ссылку на объект), если это необходимо.

Последний раз редактировалось Rise, 30.05.2016 в 13:30.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции Hol1killer Prototype & script.aculo.us 11 05.12.2016 01:37
Анимация для движения блока вниз и вверх snovapavel jQuery 9 24.12.2015 23:12
Jin: И снова о наследовании tenshi Ваши сайты и скрипты 16 19.08.2013 20:30
Помогите разобраться ŞΘLƉiΞR Общие вопросы Javascript 2 28.08.2012 11:57
регулярки: замена ссылки на ютуб Hekumok Общие вопросы Javascript 105 01.08.2012 10:48