Nano Hash - криптовалюты, майнинг, программирование

JS: возвращаемые значения между функциями — область применения

Первый пост; немного покопался, но не могу найти то, что ищу (может быть, просто слишком неопытен с сайтом). Надеюсь, вы, ребята, можете помочь:

--EDIT-- Исследование после обсуждения показывает, что я искал, как использовать return для передачи значения, полученного из одной функции, в другую.

Как это связано с глобальной/локальной областью действия? Возвращается ли значение функции из другой локальной или глобальной области видимости? Он локален по отношению к своей исходной функции, но доступен для глобального?

  • Пример изменен*

var addition = function add(a, b) { var addTotal = (a+b); вернуть addTotal; }

 var multiply = function(c) {
 var multiplyTotal = c * 2 ; 
 return multiplyTotal; }

умножить (сложение (2,3));



Ответы:


1

Заставьте getUser возвращать userName, затем при вызове lowerUserName передайте это возвращаемое значение в качестве аргумента:

var getUser = function(userName) {
    var userName = prompt("Please enter your username?") || ''; //defend against null
    return userName;                                          // return userName
};

var lowerUserName = function(userName) {                      // expect user name as parameter (you can name this variable anything you want, it's only local to lowerUserName)
    var userNameLower = userName.toLowerCase();
                                                              // you should probably return userNameLower if you want to use it somewhere else
};

lowerUserName(getUser());                                     // call getUser and pass its return value directly to lowerUserName

lowerUserName(getUser()); можно разбить на два этапа, чтобы упростить понимание:

var returnedValue = getUser();                                // the return value of getUser will be the value of userName
lowerUserName(returnValue);                                   // then we pass that value to lowerUserName when we call it
23.12.2017
  • Отлично, Ибрагим. Это было именно то, что я пытался выяснить. Также отличное объяснение, и, надеюсь, это поможет другим, пытающимся понять то же самое. 23.12.2017
  • @GeorgeJempty, ха-ха, я знаю, что ты собираешься упомянуть об этом null! 1. Я прокомментировал, потому что вы на самом деле сказали, что он возвращает строку, так что это было просто предупреждением для вас. 2. ОП заявил, что это было просто для целей обучения, поэтому я предположил, что он изучает операторы возврата, что позже было подтверждено его комментариями под вашим ответом. 23.12.2017
  • @GeorgeJempty Я только что узнал о проблемах XY 5 минут назад, прочитав ссылку из вашего комментария. И я не думаю, что проблема XY применяется к таким вопросам обучения, верно? 23.12.2017
  • Может и нет, я думал о размещении на мете со скриншотом, была ли это проблема X Y или я действительно не знал, о чем я говорил. И не опубликовал, потому что я пришел к последнему выводу LOL. Тем не менее, хотя это действительно тривиально и не так полезно, как я думаю, OP, обычно есть два способа делать такие вещи: цепочка (что сделало мое решение) или результаты вызова функции в качестве аргументов для других функций, как попытка OP и ваша решение сделал .. Итак, если не проблема X Y, то IMO это был случай, когда цепочка была более кратким решением 23.12.2017
  • @GeorgeJempty Интересная идея об этом метапосте. Пожалуйста, сделайте и дайте мне ссылку на него, чтобы я мог выразить свои идеи там. Или я должен это сделать? Мне очень не терпится узнать, подпадают ли учебные вопросы под эти проблемы XY или нет. 23.12.2017
  • Да, я удалил свой комментарий со ссылкой на него, так что вот снова meta.stackexchange.com/questions/66377/what-is-the-xy-problem БЫСТРОЕ ПРИМЕЧАНИЕ. Это старый метасайт, новый находится по адресу: meta.stackoverflow.com 23.12.2017
  • @GeorgeJempty У меня уже есть степень бакалавра (5 минут назад, помнишь?). Я говорил о новом (этом). 23.12.2017
  • Цепочка сработала бы, и я это понимаю. Я мог бы довольно легко сделать это в одной функции. ' var x = prompt(Какое у вас имя пользователя?).toLowerCase(); console.log(x);' БЫ Сработало бы, но это не было целью вопроса. Часто мы не знаем, чего мы не знаем. Например, я понимаю, что мой вопрос был неправильным, я, по-видимому, спрашивал больше о доходах, которые я сейчас собираюсь исследовать. Был ли ответ все еще полезен? Черт возьми, да, следовательно, плюс. Я отредактирую свой OP, чтобы отразить вышеизложенное, просто чтобы быть правильным. 23.12.2017

  • 2

    Я думаю, что вы, возможно, слишком усложняете это, следующее работает, потому что prompt возвращает строку (EDIT: или null, как указано в первом комментарии, и поэтому я тривиально обновил однострочник, чтобы отразить это); см. https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt:

    var userName = (prompt("Please enter your username?") || '').toLowerCase(); //FOOBAR
    console.log(userName); //foobar
    
    23.12.2017
  • Я, наверное, Джордж. Но пока речь идет не столько о простоте, сколько о переходе между самими функциями, чем о фактической операции понижения регистра вводимого имени пользователя. Эти конкретные операции были просто лучшим связанным простым примером, который я мог придумать. 23.12.2017
  • Полностью понял. Я не пытался узнать, как использовать приглашение или встроенный нижний регистр, но больше пытался понять взаимодействие между значениями функций, связанными с областью видимости; одно локальное значение доступно в другой функции. Может быть, я просто еще недостаточно знаю, чтобы знать правильные вопросы относительно моей проблемы, но все хорошо. Спасибо за ваш вклад в любом случае. 23.12.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..