Как передать парамет из функции в другую функцию?
Хочу показать на простом примере:
первая функция:
const sayHi() {
const hi = 'Hi';
say();
}
вторая функция:
const say = () => {
console.log(hi);
// как сюда передать значение переменной hi из соседней функции?
}
Ответы (4 шт):
Нельзя получить значение локальной переменной из соседней функции.
Что бы передать параметр, его нужно, эээ, передать. Например так:
const sayHi = () => {
const hi = 'Hi';
say(hi);
};
const say = (str) => {
console.log(str);
};
В дополнении к предыдущему ответу. Вы можете задать глобальную переменную var hi = 'Hi'; Проверить, что переменная является глобальной можно через window.hi; Но уровень "чистоты" данного решения, зависит от задачи.
Для передачи переменной во вторую функцию нужно использовать подобную конструкцию:
const sayHi = () => {
const hi = "HI";
say(hi) // Передаем объявленную переменную из первой функции во вторую
}
const say = (hi) => {
console.log(hi)
}
sayHi();
const hi = "HI"; будет видима только для функции в которой вы ее объявили.
Для того чтобы переменную сделать видимой для всех функций в файле нужно ее объявить глобально для этого файла. Вот так:
const hi = "HI";
const sayHi = () => {
say(hi) // Функция видит переменную которая в ней не объявлена
}
const say = (hi) => {
console.log(hi)
}
sayHi();
Итак, давайте подумаем:
- Элевация кода / модификация функции (см.
.toString()-> парсим тело функции, добавляем переменную, элевация и вот названная локальная переменная в рамках иной функции; можно, кстати, прям там и объявить эту функцию, либо.toString()); - Глобальные переменные (window.myvar) или же даже ([window|process].mysecurenamespace.myvar); никто не мешает сделать вспомогательную обработку mysecurenamespace вида
for (var _Tvar of window.mysecurenamespace) {eval(`var ${_Tvar}=window.mysecurenamespace.${_Tvar};`)}; однако, любителям констант<-чисто гуманитарная штука (+ весят в памяти + delete в 'use strict' отдельная тема) не подходит. var _Tarr=[];for (var _Tvar in Array.from(arguments) {_Tarr.push(`arguments[${_Tvar}]`)}; eval(`myAnotherFunc(${_Tarr.join(',')})`)