Показать сообщение отдельно
  #4 (permalink)  
Старый 20.08.2023, 14:01
Аватар для fxobject
Кандидат Javascript-наук
Отправить личное сообщение для fxobject Посмотреть профиль Найти все сообщения от fxobject
 
Регистрация: 01.03.2021
Сообщений: 138

переделал логику и забил.
вдогонку вот такой еще момент:
это код процедуры
initSQLVAR(argument){
    let queryVAR  = '';
    let queryText = '';
    if( argument.queryVAR === undefined ) argument.queryVAR = {}
    else{ if(argument.queryVAR[argument.table] === true ) return ''; }
    //--- перебираем поля таблицы базы данных -----------------------------------------------------
    for (let item in global.system.schemaSQL[argument.table]){
      let varSQL = '@'+argument.table+'_'+item;
      if( argument.queryVAR[argument.table] ){
        queryVAR  += 'DECLARE '+varSQL+' '+global.system.schemaSQL[argument.table][item].typeData+';\n' }
      queryText += (queryText.length === 0 ? '' : ',') + varSQL+'='+item;
    }
    //---
    if( queryVAR.length > 0) queryVAR = "/*   декларация переменных*/\n"+queryVAR
    //--- присоединение к описанию переменных текста запроса --------------------------------------
    queryVAR += '/*   запрос инициализации декларированных переменных*/\nselect '+ queryText+' from [dbo].'+ argument.table
    if( argument.ROWID !== undefined ) queryVAR += ' where ROWID='+ argument.ROWID;
    argument.queryVAR[argument.table] = 'world';
    return queryVAR+';\n'
  }

в таком варианте когда заходим (глубоко вверху по иерархии ) переменная проинициализированная в false сразу после вызова следующего уровня иерархии принимает значение
argument.queryVAR[argument.table] = 'world';
но если в этом процедуре строку
if( argument.queryVAR[argument.table] ){
заменить на
if( argument.queryVAR[argument.table] === undefined ){
все работает как надо.
понимаю что какой то глюк в коде, но очень странное поведение JS
вопрос снят, thanks
Ответить с цитированием