Я хочу понять, как правильно использовать ключевое слово return с функцией и когда его использовать.
Например, я попробовал следующий код
function getWaterBottle(money) {
console.info(`You Can Buy "${parseInt(money / 1.5)}" Bottles Of Water`)
return money % 1.5;
}
getWaterBottle(4)
Затем я подумал опустить возврат и добавить тот же вывод в консоль без ключевого слова return.
function getWaterBottle(money) {
console.info(`You Can Buy "${parseInt(money / 1.5)}" Bottles Of Water`)
console.info(`The change is ${money % 1.5}`) // this is the replacement of the return keybord
}
getWaterBottle(4)
Итак, мой вопрос: в чем разница при использовании ключевого слова return и без него, и как и когда его правильно использовать?
Я ценю вашу помощь.
Возврат данных из функций — настолько важная концепция в любом языке программирования, что вам следует остановиться на том месте, где вы находитесь, и уделить время оценке ситуации. Сам ваш вопрос показывает, что вы можете возиться с кодом, но мало знаете о программировании в целом. Потратьте пару часов и просмотрите уроки JavaScript для начинающих на MDN или W3Schools. Вы настроите себя на хороший старт. Удачного кодирования 😊



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


вот разница между вашими двумя примерами
с return:
function getWaterBottle(money) {
console.info("console.info inside function:", `You Can Buy "${parseInt(money / 1.5)}" Bottles Of Water`)
return money % 1.5;
}
const dataFromFunction = getWaterBottle(4);
console.info("console.info outside function:", "data from function: " + dataFromFunction)без return:
function getWaterBottle(money) {
console.info("console.info inside function:", `You Can Buy "${parseInt(money / 1.5)}" Bottles Of Water`);
console.info("console.info inside function:", `The change is ${money % 1.5}`);
}
const dataFromFunction = getWaterBottle(4);
console.info("console.info outside function:","data from function: " + dataFromFunction)без return во втором примере dataFromFunction это undefined. ключевое слово return вернет все, что вы напишете сразу после ключевого слова вызывающему абоненту. узнайте больше здесь
Ключевое слово return — это не просто ключевое слово, а одна из самых основных и фундаментальных концепций компьютерного программирования.
Я хочу сохранить значение результатов расчета. Я делаю этот расчет с помощью function и сохраняю возвращенный результат.
Для чистой функции важно то, что она ничего не делает сама по себе. Он должен принимать некоторые значения в качестве аргументов, выполнять вычисления, а затем возвращать результаты без побочных эффектов.
Другими словами, вызов чистой функции без каких-либо действий с возвращаемым значением должен быть таким же, как и отсутствие вызова функции вообще.
Операторы журнала не изменяют состояние вашей программы, поэтому это все еще чистые функции. Они просто ничего не делают, кроме чтения данных и отображения их в консоли.
Что, в конце концов, равнозначно отсутствию вызова, когда дело доходит до фактического состояния вашей программы.
Мне нравится, что этот ответ сообщает о важности ключевого слова return помимо JavaScript. Однако я не думаю, что нужно вдаваться в подробности о чистых функциях. Кому-то на данном этапе обучения предстоит долгий путь до этих тем. Не говоря уже о том, что функции ввода-вывода не совсем чистые.
@deadbird11 правда. Я был в этом некоторое время, поэтому я не понимал, как далеко я ушел в сорняки, лол
return в Javascript называется оператором. Его роль состоит в том, чтобы вернуть значение вызывающей функции. Некоторые функции могут не возвращать значение, поэтому оператор return не является обязательным, это зависит от того, что вы хотите сделать. Код после оператора return не выполняется. Например, можно использовать несколько return в функции, когда мы используем несколько операторов if.
Вы можете использовать оператор return в определенной ситуации, поскольку переменные, объявленные внутри вашего getWaterBottle(), имеют ограниченную область действия в теле функции, они не видны снаружи этой функции. Чтобы поделиться значением переменной, объявленной внутри вашей функции, с вызывающей функцией, вы используете оператор return.
Значение, возвращаемое оператором return, может быть присвоено переменной.
Например, пусть используется ваш код, в следующем коде вы вычисляете изменение, но не используете его. Вы просто показываете в консоли количество бутылок, которые вы можете купить на имеющиеся у вас деньги. Сдача фактически возвращается, но не используется. Мы можем использовать его в переменной, например:
function getWaterBottle(money) {
console.info(`You Can Buy "${parseInt(money / 1.5)}" Bottles Of Water`)
return money % 1.5;
}
//We assign the returned value by the return statement to the variable that we name "change"
let change = getWaterBottle(4)
//We display the value of the variable in the console
console.info(`The change is ${change}`);Этот пример должен помочь вам понять, как мы можем поделиться результатом функции с оператором return.
С другой стороны, вы можете использовать его значение, не присваивая его переменной, например, мы хотим применить скидку к клиентам, покупающим более трех бутылок:
function getWaterBottle(money) {
//We return the number of bottles the customer can buy
return parseInt(money / 1.5)
}
//We use an "if" statement, as you can see, the getWaterBottle() function is returning a value that can be read directly by the "if" statement.
let money = 5
if (getWaterBottle(money) > 3) {
console.info("Eligible to a discount");
}
else {
console.info("Not eligible to a discount");
}Теперь, чтобы показать вам использование нескольких операторов return, давайте возьмем предыдущий пример со скидкой:
function getWaterBottle(money) {
//We assign the number of bottles the customer can buy to a variable
numberOfBottles = parseInt(money / 1.5)
//we check for the discount
if (numberOfBottles > 3) {
return true
}
else {
return false
}
}
//In this "if" statement, we check if the getWaterBottle() is returning true or famse
if (getWaterBottle(8)) {
console.info("eligible to a discount");
}
else {
console.info("not eligible to a discount");
}Опять же, это примеры, в соответствии с вашим проектом, код можно сделать короче с некоторой хорошей практикой.
Что касается вашего второго кода, неиспользование оператора return означает, что код внутри вашей функции выполняется, но значение не возвращается, на самом деле он возвращает undefined, и даже если вы объявляете переменные внутри него, вы не можете использовать их вне вашей функции.
Вы, вероятно, смущены тем, как консоль Chrome регистрирует события. Chrome регистрирует любое значение, которое вы ему даете. В вашем первом примере он автоматически регистрирует возвращаемое значение, поскольку это то, что оценивает выражение. Разница очевидна, ваша вторая функция ничего не возвращает, поэтому никто другой не может получить доступ к результату функции. Функции Javascript очень хорошо документированы, я не думаю, что это подходящий вопрос для Stackoverflow.