Можно ли получить имя переменной результата внутри функции?

#javascript #typescript

#javascript #машинописный текст

Вопрос:

Я хочу получить имя переменной ( user_name1 или user_name2 из примера), которое является результатом функции ( GetUserName() ) внутри этой функции ( GetUserName() ). Мне нужно это имя для создания объекта с тем же именем на стороне сервера (синхронизация данных).

 function GetUserName(){
  let result_variable_name = ????; //in (1) result_variable_name == 'user_name1', in (2) result_variable_name == 'user_name2'
  socket.send("object_name", result_variable_name);
  return "Some user name";
}
let user_name1 = GetUserName(); //(1)
let user_name2 = GetUserName(); //(2)
 

Возможно ли это? Как?

Комментарии:

1. Одним словом… Нет, это невозможно.

2. Передайте его в качестве параметра: let user_name1 = GetUserName("user_name1"); Но мне интересно, зачем тебе это нужно. Я не понимаю, почему это было бы необходимо только для синхронизации данных (или для чего-то еще).

3. Проблема здесь в том, что вы спрашиваете: «Как мне использовать X для выполнения Y?» но X, вероятно, уже является неправильным инструментом для использования.

Ответ №1:

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

Также:

 let users = [GetUserName(), GetUserName()];
 

Что теперь?

Передайте имя явно в функцию, точка.

 GetUserName('user_name1')