Как вызывать функции с параметрами внутри вложенной функции?

Скажем, у меня есть вложенная функция с именем «страны», и я хочу вызвать две функции: одна с именем «Россия» с параметром «города1» и другая с именем «Китай» с параметром с именем «города» внутри функций стран. Как мне вызвать две функции с параметрами внутри вложенной функции?

function countries() {
  function Russia(cities1) {
    var totalpop1 = cities1 * (10 ** 6);
    //each city has a population of 10^6 people
    return totalpop1;
  }

  function China(cities2) {
    var totalpop2 = cities2 * (10 ** 6);
    //each city has a population of 10^6 people
    return totalpop2;
  }
  var result = totalpop1 + totalpop2;
  return result;
}

Ну, сначала вам нужно вызов внутренние функции, но вы не показываете, как вы их вызываете в приведенном выше коде.

CertainPerformance 31.10.2018 00:31

Если вы вызываете его изнутри countries, то просто Russia(809). Если за пределами countries, то вы не можете получить доступ к вложенным функциям из-за области видимости

Justinas 31.10.2018 00:37
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
938
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вы можете использовать объект (например, класс).

А как насчет кода ниже?

var countries = {
  getRussia: function(cities1) {
    var totalpop1 = cities1 * (10 ** 6);
    //each city has a population of 10^6 people
    return totalpop1;
  },

  getChina: function(cities2) {
    var totalpop2 = cities2 * (10 ** 6);
    //each city has a population of 10^6 people
    return totalpop2;
  },
  
  getTotal: function(pop1, pop2) {
    var result = this.getRussia(pop1) + this.getChina(pop2);
    return result;
  }
}

var div = document.querySelector("#result");
div.innerHTML = countries.getTotal(1, 4);
<div id = "result"></div>

Но если вы действительно хотите вызывать вложенные функции, вы можете использовать замыкания:

function countries() {
    return function(cities1) {
    var totalpop1 = cities1 * (10 ** 6);

    return function(cities2) {
        var totalpop2 = cities2 * (10 ** 6);

      return totalpop1 + totalpop2;
    }
  }
}

var div = document.querySelector('#result');

div.innerHTML = countries()(1)(4);

Какова цель использования ключевого слова this?

Anonymous 31.10.2018 00:59

ключевое слово this связывает объект countries в ECMA 5. Если функция находилась вне объекта, ключевое слово this связывало бы саму функцию.

Pablo Darde 31.10.2018 01:08

Другие вопросы по теме