17.05.2016, 04:43
|
Новичок на форуме
|
|
Регистрация: 11.01.2016
Сообщений: 5
|
|
Синтаксис оператора return
Не могу понять, почему в операторе return через запятую перечисляются переменные.
Разве так можно через запятую перечислять?
function clOpinions() {
var product = {
restrict: "AEC",
scope: {
id: "=",
opinions: "="
},
controller: clOpinionsCtrl,
};
return clOpinionsCtrl.$inject = ["$scope"], product
}
|
|
17.05.2016, 05:37
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Acar, так можно, а вот так нельзя
function clOpinions() {
var product = {
restrict: "AEC",
scope: {
id: "=",
opinions: "="
},
*!*
controller: clOpinionsCtrl,
*/!*
};
return clOpinionsCtrl.$inject = ["$scope"], product
}
|
|
17.05.2016, 06:53
|
Новичок на форуме
|
|
Регистрация: 11.01.2016
Сообщений: 5
|
|
Сообщение от Rise
|
Acar, так можно, а вот так нельзя
|
Rise, что в таком случае будет возвращено функцией, то что представленно не одной, а несколькими переменными перечисленными в return через запятую?
Объект или массив..
Последний раз редактировалось Acar, 17.05.2016 в 06:58.
|
|
17.05.2016, 06:58
|
Профессор
|
|
Регистрация: 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.
|
|
17.05.2016, 07:30
|
Новичок на форуме
|
|
Регистрация: 11.01.2016
Сообщений: 5
|
|
Сообщение от Rise
|
Acar, последнее значение, можно даже так
function clOpinions() {
return clOpinionsCtrl.$inject = ["$scope"], {
restrict: "AEC",
scope: {
id: "=",
opinions: "="
},
controller: clOpinionsCtrl
}
}
|
Rise, так что это будет за тип (объект, массив) возвращаемого значения, состоящий из нескольких перечисленных через запятую сущностей в операторе return?
И каким образом затем обратиться, например, к последнему из них в предложенном вами варианте return, ведь у него Вы не оставили имени?
|
|
17.05.2016, 07:46
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
Acar, тот же тип что и у последней возвращаемой сущности. Return завершает выполнение функции затем обратиться не куда не получится хоть с именем хоть без.
|
|
17.05.2016, 08:17
|
Новичок на форуме
|
|
Регистрация: 11.01.2016
Сообщений: 5
|
|
Сообщение от Safort
|
Acar,
Оператор запятая вернёт последнее перечисленное значение.
|
Safort, так а какой смысл тогда в return перечислять что-либо через запятую, если все что до последней запятой все равно не возвращается функцией?
Как в моем примере, не возвращается clOpinionsCtrl
return clOpinionsCtrl.$inject = ["$scope"]
Последний раз редактировалось Acar, 17.05.2016 в 08:20.
|
|
30.05.2016, 13:20
|
Профессор
|
|
Регистрация: 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.
|
|
|
|