Название функции var - PullRequest
0 голосов
/ 25 июня 2018

Я написал код, который находит две строки, и в ответ он должен сказать мне, существуют ли эти две строки:

 function searchTwoString(data, str1, str2) {

   var strX = str1 + " " + strValueX + "\r\n";
   var strY = str2 + " " + strValueY;
   var strValueX;
   var strValueY;

   for (var i = 0; i < data.length; i++) {
     if (data[i] === str1) {
       var strValueX = " exist";
       continue;

     } else if (data[i] === str2) {
       var strValueY = " exist";
       break;
     } 
   }

   return strX + strY;

 }

Достигнутый результат:

str1 undefined

str2 undefined

Ожидаемый результат:

str1 существует

str2 существует

он говорит мне, что мои strvalueX & strvalueY равны undefined не так ли я уже дал значения в операторе if?

спасибо тем, кто выручит

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Вот ответ на ваш вопрос с комментарием.

Надеюсь, вы понимаете, о чем я говорю.

function searchTwoString(data, str1, str2) {

   var strX;// = str1 + " " + strValueX + "\r\n";
   var strY;// = str2 + " " + strValueY;
   var strValueX;
   var strValueY;

   for (var i = 0; i < data.length; i++) {
       if (data[i] === str1) {
           // var strValueX = " exist";
           // do not define again
           strValueX = " exist";
           continue;

       } else if (data[i] === str2) {
           // var strValueY = " exist";
           // do not define again
           strValueY = " exist";
           break;
       }
   }
   // define the value here after strValueX and strValueY is set
   strX = str1 + " " + strValueX + "\r\n";
   strY = str2 + " " + strValueY;

   return strX + strY;

}

0 голосов
/ 25 июня 2018

Порядок ваших заявлений отключен.В строках 2 и 3 вы используете strValueX и strValueY до их определения.Строки 2 и 3 должны быть перемещены до возврата, чтобы они имели обновленные значения.

Я полагаю, что существует также проблема с теневым копированием, как в операторах if, когда вы создаете новые переменные с varключевое слово (например, var strValueX = " exist";).Вы захотите удалить var из операторов if, чтобы он обновлял значения внешних переменных.

...