2016-07-22 106 views
0

我试图阻止我的for循环,当它等于某个输入时,我能够在函数外实现这一点。例如,假设我将输入变量设置为'not leak',我希望循环在数组命中'not'时停止,并将其添加到设置为'leak'以输出'not leak'的关键字变量。但是,当我尝试将循环插入函数时,它停止了按预期方式工作,并会给出每个结果,直到输入变量等于文本变量(我不希望它这样做)。例如,它会输出'不泄漏','不泄漏',这就是停止的地方,当我只是想要它输出'不泄漏'把循环放在一个函数内

我已经尝试了各种格式的功能,如设置函数作为变量,给出函数参数,并将变量放在函数内部和外部,零进度。看起来,如果语句插入到函数中,它不会按预期工作。任何想法为什么以及如何解决这个问题?

下面是它在一个函数中的外观。

function negKeyword() { 
 
\t 
 
var keyword = 'leak'; 
 
var input = 'not leak'; 
 
var text = ''; 
 
var arr = ['no', 'not', 'checked', '']; 
 
\t 
 
for (i = 0; i < arr.length; i++) { 
 
\t 
 
\t if (text == input) { break; } \t 
 
\t text = arr[i] + ' ' + keyword; 
 
\t console.log(text); 
 
\t 
 
\t } 
 
\t 
 
} 
 

 
negKeyword();

下面是它的外观功能

var keyword = 'leak'; 
 

 
var input = 'no leak'; 
 

 
var text = ""; 
 

 
var arr = ['no', 'not', 'checked', '']; 
 

 
for (i = 0; i < arr.length; i++) { 
 
\t 
 
\t if (text===input) {break;} 
 
\t text = arr[i] + ' ' + keyword; 
 
\t 
 
} 
 

 
console.log(text);

+2

它做同样的事情里面任何函数之外。你只是在不同的地方有'console.log'。也许你应该正确地缩进你的代码,以便你能看到它。 – 4castle

回答

0

您正在使用的console.log内循环之外。下面的功能匹配内部和外部。

function negKeyword() { 
 
\t 
 
var keyword = 'leak'; 
 
var input = 'not leak'; 
 
var text = ''; 
 
var arr = ['no', 'not', 'checked', '']; 
 
\t 
 
for (i = 0; i < arr.length; i++) { 
 
\t 
 
\t if (text == input) { break; } \t 
 
\t text = arr[i] + ' ' + keyword; 
 
\t 
 
\t 
 
\t } 
 
     console.log(text);//Place this here (outside the for loop) 
 
\t 
 
} 
 

 
negKeyword();

+0

不应缩进括号和'console.log'。我觉得这是悲伤的真正原因。 – 4castle

+0

我认为这将是简单的事情,谢谢! –

0

你的console.log是内循环。

function negKeyword() { 
 
\t 
 
var keyword = 'leak'; 
 
var input = 'not leak'; 
 
var text = ''; 
 
var arr = ['no', 'not', 'checked', '']; 
 
\t 
 
for (i = 0; i < arr.length; i++) { 
 
\t 
 
\t if (text == input) { break; } \t 
 
\t text = arr[i] + ' ' + keyword; 
 
\t } 
 
\t return text; 
 
} 
 

 
console.log(negKeyword());