Dimazik123
@Dimazik123
Ученик

Зачем нужен return вообще кроме окончания функцыи?

Зачем нужен return вообще кроме окончания функции?
Знаю что для возвращения например return 2+2;
На протяжения всего JS я юзал его только что бы закончить функцию или условие.
Но не понимаю суть, пожалуйста об ясните.
Я вот не как не могу разобраться. :(
  • Вопрос задан
  • 425 просмотров
Решения вопроса 1
potapchino
@potapchino
функция всегда что-то возвращает. чтобы указать, что именно функция должна возвратить, используется ключевое слово return. это и есть его суть. даже если его(return) нет в теле функции, функция все равно вернет undefined по умолчанию.

spoiler
эта функция вернет undefined, т.к. ключевого слова return нет.
function func() {
  var a = 5;
  var b = 10;
  var sum = a + b;
}
var result = func()
console.log(result) // undefined


эта функция вернет строку 'i love js', т.к. вы явно на это указали с помощью ключевого слова return.
function func() {
  var a = 5;
  var b = 10;
  var sum = a + b;
  return 'I love js';
}
var result = func()
console.log(result) // 'I love js'


вернет сумму двух чисел
function func() {
  var a = 5;
  var b = 10;
  var sum = a + b;
  return sum;
}
var result = func()
console.log(result) // 15


вернет сумму двух чисел
function func(a, b) {
  var sum = a + b;
  return sum;
}
var result = func(3, 7)
console.log(result) // 10


тоже самое
function func(a, b) {
  return a + b;
}
var result = func(2, 2)
console.log(result) // 4


следующие две функции возвращают undefined. первая явно, вторая неявно
function func1() {
  return undefined;
}
var result = func1()
console.log(result) // undefined


function func2() {
  
}
var result = func2()
console.log(result) // undefined


вернет другую функцию
function func() {
  return function () {
    return 'ааа сложнааа'
  };
}
var result = func()
var result2 = result()
console.log(result) // function func()
console.log(result2) // 'ааа сложнааа'
console.log(func()()) // 'ааа сложнааа'


как только в функции встречается это ключевое слово, интерпретатор немедленно останваливает выполненние функции(выходит из нее) и возвращает то что написано после этого ключевого слова. именно поэтому этот цикл выполнит всего лишь одну итерацаю, а не 100, как и должно, и вернет 1.
function func() {
  for (var i = 1;  i < 100; i = i + 1) {
    return i
  }
}
var result = func()
console.log(result) // 1


а вот так вернет 100
function func() {
  for (var i = 1;  i < 100; i = i + 1) {
    
  }
  return i
}
var result = func()
console.log(result) // 100


а вот так вернет undefined
function func() {
  for (var i = 1;  i < 100; i = i + 1) {
    
  }
  return 
}
var result = func()
console.log(result) // undefined
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
gans5131
@gans5131
web-developer
Возьмем на примере элементарной задачи. Сделаем функцию для сложения двух чисел.
function sum(a,b){
    var sum = a +b;
    return sum;
}

var a1=2;
var a2=3;
var b=sum(a1,a2);


Это очень простая функция и поэтому можно было бы обойтись и без неё. А теперь представь, что тебе нужно ну хотя бы проверить тип входящих данных и необходимо привести данные к нужному типу. Всё это будет удобно сделать внутри функции.
Ответ написан
firedragon
@firedragon
Senior .NET developer
Return в дословном переводе это возврат.
Вы выходите из кода и возвращаетесь обратно. Возврат значения это вообще побочное явление. Кстати в нормальных языках можно еще и указывать куда это значение ложить/класть.
Ответ написан
Digiport
@Digiport
WebBasic CMS
Ещё стоит заметить,что внутри функции может быть несколько операторов return. Он не только выполняет возврат из функции, но и указывает место, откуда этот возврат происходит. Так, return может выпоняться по выполнению какого-либо условия, не дожидаясь выполнения всего кода функции.
function sum(a,b){
    var sum = a +b;
    if (sum > 10) {
         return "Возврат по условию 1" ;
    } else if (sum < 5) {
         return "Возврат по условию 2" ;
    }
    return sum;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽