Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Оптимизация скриптов (https://javascript.ru/forum/misc/81421-optimizaciya-skriptov.html)

Владимѣръ 25.11.2020 20:32

Да, код у меня слишком большой. Просто в функциях, которые я выношу, не объявлены все переменные. Они берутся из кода выше. В этом то и проблема.

voraa 25.11.2020 20:47

Цитата:

Сообщение от Владимѣръ
Просто в функциях, которые я выношу, не объявлены все переменные

Это не имеет значения. Внешняя (глобальная) переменная должна быть объявлена к моменту выполнения функции, а не ее определения.
Как вы загружаете скрипты? Как обычные или как модули? Переменные объявленные в модулях не будут видны, кроме экспортируемых и импортируемых. Для обычных скриптов любая внешняя переменная (объявленная вне функции) будет видна где угодно (если, конечно в данной функции нет локальных переменных с таким же именем)

Владимѣръ 26.11.2020 13:04

Вчера засыпал, и меня осенило: это же у меня весь скрипт идет внутри функции 'on-submit'. Получается, что и функции, которые я выношу не видят переменных. Вот причина! Значит наверное уже ничего не поделаешь... или что-то можно?

voraa 26.11.2020 13:07

Вынести переменные из функции 'on-submit' на глобальный уровень.

Владимѣръ 26.11.2020 13:10

А как это сделать?

voraa 26.11.2020 13:16

Ну писать
var x (или let x) не внутри функции, а снаружи.

Владимѣръ 26.11.2020 13:29

Так в том то и дело, что я извлекаю данные из формы внутри функции 'on-submit' и там же продолжаю работать. Я из функции могу выводить Return'ом только одно значение, а у меня их много. Просто может я как-то своеобразно извлекаю данные из формы, но у меня получилось только так:
$('form').bind('submit', function(e) {
		let Name1 = $(this).children('input[name="Name1"]').val();
		let Name2 = $(this).children('input[name="Name2"]').val();
		let dat = $(this).children('input[name="dat"]').val();
		let tim = $(this).children('input[name="tim"]').is(':checked');

Ну и дальше я начинаю с ними работать. И все это внутри одной функции, как-то так...

voraa 26.11.2020 13:42

let Name1, Name2, dat, tim;

$('form').bind('submit', function(e) {
        Name1 = $(this).children('input[name="Name1"]').val();
        Name2 = $(this).children('input[name="Name2"]').val();
        dat = $(this).children('input[name="dat"]').val();
        tim = $(this).children('input[name="tim"]').is(':checked');

Владимѣръ 26.11.2020 14:03

Надо попробовать, так я еще не пробовал. Ближе к вечеру, Благодарю!

рони 26.11.2020 14:09

Цитата:

Сообщение от Владимѣръ
может я как-то своеобразно извлекаю данные из формы

https://api.jquery.com/serialize/


Часовой пояс GMT +3, время: 19:54.