Конфликт имен переменных с именами функций



  • Наконец-то я понял причину бага. Долго думал, что же не так, и что возможно меня глючит. Ошибка возникла еще пол года назад, я даже писал на форуме, но мне не ответили, а тему ту я не нашел. Поэтому создал новую.
    Возникала такая ошибка в скрипте:

         1 - TypeError: Result of expression 'f' [] is not a function. Line number:353 During execution of script 
    

    По номеру строки в скрипте ничего особенного, т.к. сама ошибка в другом месте.
    В проекте добавлена функция login для авторизации на сайте. Ошибку заметил, когда при использовании прокси ошибка возникала, но стоило удалить блок с использованием прокси, как все работало.
    Часть кода из блока прокси

    var login = VAR_PROXY_LOGIN
    

    Код вызова функции и сама функция:

    _call(login,null)!
       function login()
    {
    ...
    }
    

    Можно использовать переменную proxy_login при генерации шаблона. А то так и психикой поехать недолго) Если не знать причину. Изначально вообще думал, что конфликт с базой данных, где так же было поле login
    Еще самое замечательное, что при изменении переменной в коде скрипта - изменения не сохраняются. После любого изменения в режиме записи все возвращается.



  • @blackhacker Много в каких темах уже поднимался данный момент. Я всегда к переменным добавляю "_". Что бы 100% имя было уникально.

    А вообще хорошо было бы, если BAS выдавал ошибку на этот счёт, типа Conflicting Variable Names



  • @Fox said in Конфликт имен переменных с именами функций:

    А вообще хорошо было бы, если BAS выдавал ошибку на этот счёт, типа Conflicting Variable Names

    А если нужно намеренно заменить старую переменную? Но вариант в стандартных шаблонах использовать добавление к переменным (например proxy_login вместо login) подошел бы. Уже сделано так, что к переменной добавляется VAR_, но вот с такими переменными почему-то не сделали.



  • @blackhacker Я в смысле если в проекте есть имя переменной, которое совпадает с именем функции.



  • Можно словить ещё один баг, если начинать названия функций с цифр. Надо бы поправить это.

    SyntaxError: Parse error
    


  • @UA said in Конфликт имен переменных с именами функций:

    Можно словить ещё один баг, если начинать названия функций с цифр. Надо бы поправить это.

    SyntaxError: Parse error
    

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



  • @santilo, это понятно. Но можно ведь "пофиксить" это запретом на ввод цифр в начале названия? Думаю, вполне :)



  • @UA said in Конфликт имен переменных с именами функций:

    @santilo, это понятно. Но можно ведь "пофиксить" это запретом на ввод цифр в начале названия? Думаю, вполне :)

    Этого я не знаю, но я думаю тебе не принципиально ведь начинать именование с цифры, поставь ее в конец, и проблема решена)


  • administrators

    @blackhacker Да, я сейчас думаю над алгоритмом, как это можно исправить.
    Но по умолчанию БАС создает переменные вместе с VAR_, поэтому у большинства пользователей проблем быть не должно.
    В данной версии можно словить баг только назвав функцию как какую-то из апи, или используя выполнить код.

    Еще самое замечательное, что при изменении переменной в коде скрипта - изменения не сохраняются. После любого изменения в режиме записи все возвращается.

    При смене переменной в код скрипта, он выполняется с новой переменной, а вот редактор воспринимает старое значение, так как все данные для него хранятся в комментарии начинающемся с Dat:, а его вы не меняете.


  • administrators

    @UA

    это понятно. Но можно ведь "пофиксить" это запретом на ввод цифр в начале названия? Думаю,

    Это исправлено в последней.


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.