函数标题变量

Function title var

我写了一个代码来查找两个字符串,在 return 它应该告诉我这两个字符串是否存在:

 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 exist

str2 exist

它告诉我我的 strvalueXstrvalueYundefined 是不是我已经在 if 语句中给出了值?

感谢那些愿意提供帮助的人

你的陈述顺序错了。在第 2 行和第 3 行中,您在定义 strValueXstrValueY 之前使用它们。第 2 行和第 3 行应移至 return 之前,以便它们具有更新后的值。

我相信还有一个阴影问题,因为在 if 语句中,您正在使用 var 关键字(例如 var strValueX = " exist";)创建新变量。您需要从 if 语句中删除 var 以便它更新外部变量的值。

这是对您的问题的回答和评论。

希望你明白我在说什么。

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;

}