Конфликт имен переменных с именами функций
-
Наконец-то я понял причину бага. Долго думал, что же не так, и что возможно меня глючит. Ошибка возникла еще пол года назад, я даже писал на форуме, но мне не ответили, а тему ту я не нашел. Поэтому создал новую.
Возникала такая ошибка в скрипте: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, это понятно. Но можно ведь "пофиксить" это запретом на ввод цифр в начале названия? Думаю, вполне :)
Этого я не знаю, но я думаю тебе не принципиально ведь начинать именование с цифры, поставь ее в конец, и проблема решена)
-
@blackhacker Да, я сейчас думаю над алгоритмом, как это можно исправить.
Но по умолчанию БАС создает переменные вместе с VAR_, поэтому у большинства пользователей проблем быть не должно.
В данной версии можно словить баг только назвав функцию как какую-то из апи, или используя выполнить код.Еще самое замечательное, что при изменении переменной в коде скрипта - изменения не сохраняются. После любого изменения в режиме записи все возвращается.
При смене переменной в код скрипта, он выполняется с новой переменной, а вот редактор воспринимает старое значение, так как все данные для него хранятся в комментарии начинающемся с
Dat:
, а его вы не меняете.
-
это понятно. Но можно ведь "пофиксить" это запретом на ввод цифр в начале названия? Думаю,
Это исправлено в последней.