ogregor
@ogregor
арендатор vpn сервера debian

Как вернуть из функции переменную, переопределяющую предыдущее значение переменной?

Здравствуйте, не первый раз сталкиваюсь с проблемой, решение которой откладывал на потом. Собственно для не новичков ничего сложного.
var set = "https://авава.me/c_parser.php?type=getjson&set=mMoscow";

  $(document).ready(function() {       
           $('#drop-list').on("select2:open", function (set) { 
             var table = $('.json.active').attr('id'); //идентификатор таблицы
             var city = $('#city').val(); //идентификатор города
             var set = "../../../../c_respond.php?type=getTable&city="+city+"&nameTable="+table;
             console.log(set); 
            });
  
            $('#drop-list').select2({
                minimumInputLength: 2,
        ajax: {
            url: set,
            dataType: 'json',
            data: function (term,page) {
                return {
                    q: term              
                  };
.........


тут 3 части:
1) Обьявление переменной set при загрузке системы,
2) Переопределение переменной set при возникновении событий.
3) Подстановка переменной set в запрос.
Вот тут что то не клеется, почему-то переменная не переопределяется.
  • Вопрос задан
  • 320 просмотров
Решения вопроса 1
@dixoNich
frontend developer
Не стоит писать window.set, и за что, никогда. Потом от этого у Вас будет болеть всё на свете, когда в одном файле у вас window.blabla = 1, в другом window.blabla = 5 и будете бегать искать, что не так. Просто стоит разобраться с областью видимости:
https://learn.javascript.ru/functions-closures
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
var set внутри функции - это определение локальной переменной, которая к глобальной не имеет никакого отношения. Упоминание set далее в функции обращается к локальной переменной, упоминание в другом месте - к глобальной.
Пока не освоились с областями видимости, пишите глобальные переменные как window.set - это то же самое, но ошибиться будет куда труднее.
Ответ написан
@kapitan7830
var уберите вот так и будет работать,
а вообще, как уже советовали выше,
разберитесь в областях видимости,
чтобы таких проблем
не возникало
$('#drop-list').on("select2:open", function () { 
             var table = $('.json.active').attr('id'); //идентификатор таблицы
             var city = $('#city').val(); //идентификатор города
             set = "../../../../c_respond.php?type=getTable&city="+city+"&nameTable="+table;
             console.log(set); 
            });
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы